【发布时间】:2013-07-24 13:36:04
【问题描述】:
我只是想通过新版本回到 .NET MVC,但我无法理解视图绑定到 DataModel 的方式。
我有一个带有属性“first_name”的模型,并且在 HTML 表单中我有以下内容
<%= Html.TextBox("first_name", Model.first_name)%>
<%= Html.TextBoxFor(model => model.first_name) %>
<input type="text" name="first_name" id="first_name" class="myLabel"
value="<%=Model.first_name %>" />
如果我在我的模型上设置 first_name 属性并执行,则在控制器上的操作中
mymodelObject.first_name = "Test";
return View(mymodelObject);
是什么原因只有第三个文本框选择了这个 first_name 值而其他两个没有?
编辑:
我可能解释得不够清楚,抱歉。想象一下我有 2 个控制器方法 -
public ActionResult Register()
{
Registration model = new Registration();
model.first_name = "test";
return View(model);
}
有了这个,任一绑定都可以工作。
显示后,我单击表单上的按钮并尝试运行:
[HttpPost]
public ActionResult Register(Registration_ViewData model)
{
model.first_name = "Steve";
return View(model);
}
我要问的是为什么第 3 个而不是第 2 个绑定到“Steve”作为新名称。
【问题讨论】:
-
三个文本框是否全部显示,但只有第三个有“测试”?还是只显示第三个文本框?我刚刚在测试应用程序中尝试了您的代码,并且所有三个都可以正常工作。您使用的是哪个版本的 MVC 2?
-
嗨西蒙,对不起 - 在我似乎无法设置值的 HttpPost 之后添加了更多背景,例如如果我在表单上有一个名为“如果您的名字是史蒂夫,请单击此处”的按钮。然后它填充第三个文本框的值并留下另外两个。抱歉有点初学者,我相信我的解释会让每个人都更难。
-
这可能与您的 ModelState 有关,因为您发布并返回相同的视图,但您实际上并未使用表单集合值来更新模型。检查您的 ModelState 键和值,看看在第二次渲染页面时,前两个框的值是“test”还是“Steve”。
标签: asp.net asp.net-mvc