【发布时间】:2012-11-12 08:53:50
【问题描述】:
我正在尝试创建一个 MVC 操作方法,该方法允许用户逐步查看一系列数据库记录。每次用户发布更新时,都会将其提交到数据库,并检索并呈现一条新记录以供审核。
但是,我的 MVC 视图似乎正在组合来自发布的视图模型和作为数据库查询结果创建的新视图模型的数据。当视图简单地呈现来自视图模型的属性值时,它正确地使用了来自视图模型实例的那些传递给它的值,但是当它将 HTML 表单控件绑定到视图模型属性时,它使用来自发布的视图模型的值。这意味着单个视图能够为单个视图模型实例上的单个属性显示两个不同的值:
这是一个非常简化的操作方法版本...
public ActionResult Index(MyViewModel model)
{
if (ModelState.IsValid)
{
// Write the posted model data to the repository
// ...
// Retrieve a new entity for the user to work on
var alternate = new MyViewModel { Name = "New Name" };
return View(alternate);
}
return View(model);
}
...和视图模型...
public class MyViewModel
{
[Required]
public string Name { get; set; }
}
...以及用于创建上述图像的视图...
@model Mvc4TestApplication.ViewModels.MyViewModel
Name: @Model.Name
@using (Html.BeginForm())
{
@Html.LabelFor(model => model.Name)
@Html.TextBoxFor(model => model.Name)
<input type="submit" value="Submit"/>
}
似乎我误解了 MVC 视图发现其模型数据的方式。我应该使用一些替代语法来明确告诉视图将其表单控件绑定到传递给它的视图模型吗?
谢谢,
蒂姆。
【问题讨论】:
标签: asp.net-mvc model-view-controller model-binding asp.net-mvc-views asp.net-mvc-viewmodel