我是ASP.net MVC的新手,我使用DevExpress-MVC扩展来构建一个使用DataGrid的小型应用程序,为员工注册时间。
我的问题是:
用户可以输入他的名字的缩写,提交给控制器应该调用查询到我的数据库,并显示他的响应雇员ID。
我让我的DataViewModel将我的模型传递给视图,现在我想将它绑定到textbox并从ViewModel中检索数据就可以了,但是它做不到。
我的守则是这样的:
ViewModel
public class MyErfassungViewModel
{
public MyErfassung erfassung;
public String personalnummer;
public String personalkuerzel;
public List<String> dim1;
public List<String> dim2;
public List<String> dim3;
public List<String> dim4;
public List<String> dim5;
public MyErfassungViewModel(MyErfassung myerfassung)
{
this.erfassung = myerfassung;
}
}视图
@model DevExpressMvcApplication.Models.ViewModel.MyErfassungViewModel
<div class ="Personalnummer">
@using (Html.BeginForm("getNummer","MyErfassung"))
{
<label>Personalkürzel</label>
@Html.DevExpress().TextBox(settings =>
{
settings.Name = "TextBoxPersonalkürzel";
}).Bind(Model.personalkuerzel).GetHtml()
<label>Personalnummer</label>
@Html.DevExpress().TextBox(settings =>
{
settings.Name = "TextBoxPersonalnummer";
settings.ReadOnly = true;
}).Bind(Model.personalnummer).GetHtml()
@Html.DevExpress().Button(settings =>
{
settings.Name = "TextBoxKuerzel";
settings.Text = "Holen";
settings.UseSubmitBehavior = true;
}).GetHtml()
<br>
}
</div>控制器
//
// GET: /MyErfassung/
public ActionResult Index()
{
viewModel.personalkuerzel = "sese";
return View(viewModel);
}
[HttpPost]
public ActionResult getNummer()
{
String kurz = Convert.ToString(Request["TextBoxKuerzel"]);
String nr = Convert.ToString(Request["TextBoxPersonalnummer"]);
String nummer = dbRepo.getPersonalnummerByKuerzel(viewModel.personalkuerzel);
viewModel.personalnummer = nummer;
return View(viewModel);
}就像您可以看到的一样,我尝试了一些可能的方法来接收用户输入并发送DB请求以获得一个数字。但是,无论是请求还是视图模型都包含不止一个空引用。
但简单地说,我无法将用户输入从我的表单传递回控制器。
发布于 2013-04-29 10:58:11
您只需将视图模型传递给您的控制器操作,模型绑定器将负责其余的操作。然后,您可以访问这些属性,并按您认为合适的方式处理它们:
[HttpPost]
public ActionResult getNummer(MyErfassungViewModel viewModel)
{
String nummer = dbRepo.getPersonalnummerByKuerzel(viewModel.personalkuerzel);
...
}当您将MyErfassungViewModel参数(例如,viewModel)定义到POST操作方法时,ASP.NET MVC模型绑定器将接受来自您的视图的表单值,填充MyErfassingViewModel实例并将其传递到您的方法中。
目前,getNummer方法的参数列表是空的,因此视图模型没有地方可以传递。
Update:因为MyErfassungViewModel有一个重载的构造函数,所以您需要添加一个默认构造函数,以便模型绑定器可以实例化它:
public class MyErfassungViewModel
{
public MyErfassung erfassung;
public String personalnummer;
public String personalkuerzel;
public List<String> dim1;
public List<String> dim2;
public List<String> dim3;
public List<String> dim4;
public List<String> dim5;
public MyErfassungViewModel(MyErfassung myerfassung)
{
this.erfassung = myerfassung;
}
public MyErfassungViewModel()
{
}
}发布于 2013-04-29 12:37:08
在下面的问题中给出了一个最终引导我找到我的数据的解决方案
ASP.NET MVC Passing Data from View to Controller
对于我的解决方案,代码如下所示:
视图
[HttpPost]
public ActionResult getNummer()
{
String kurz = Convert.ToString(Request["personalkuerzel"]);
String nr = Convert.ToString(Request["personalnummer"]);
String nummer = dbRepo.getPersonalnummerByKuerzel(kurz);
viewModel.personalnummer = nummer;
return View(viewModel);
}不幸的是,该解决方案似乎没有使用Ant P描述的舒适方式,即自动将响应数据应用于模型。
https://stackoverflow.com/questions/16276506
复制相似问题