Asp.net mvc 3 为什么我的文本框用于使用我的路线数据?
所以我有以下三行:Asp.net mvc 3 为什么我的文本框用于使用我的路线数据?,asp.net-mvc-3,Asp.net Mvc 3,所以我有以下三行: <div style="background-color: lightgreen;">@Html.TextBoxFor(m => m.Id)</div> <div style="background-color: green;">@Html.DisplayTextFor(m => m.Id)</div> <div style="background-color: pink;">@Model.Id</
<div style="background-color: lightgreen;">@Html.TextBoxFor(m => m.Id)</div>
<div style="background-color: green;">@Html.DisplayTextFor(m => m.Id)</div>
<div style="background-color: pink;">@Model.Id</div>
我这里有一些解释:
谢谢 您可以从呈现视图的控制器操作中的
ModelState
(Html帮助程序从中获取该值)中删除有问题的值:
public ActionResult SomeAction(int id)
{
ModelState.Remove("Id");
MyViewModel model = ...
return View(model);
}
现在,文本框使用的是视图模型的Id
属性,而不是来自路由的属性
显然,这只是一个丑陋可怕的解决办法。正确的方法当然是正确地定义视图模型,这样就不会有这种命名冲突。这是我在URL中发送日期时间(包括时间00:00:00)时发现的唯一选项,因此它以00:00:00显示在屏幕上,并忽略了模型属性上的格式设置。获取00:00:00的唯一方法是忽略ModelState中的字段,因此MVC停止将URL中的文本放入文本框。
public ActionResult SomeAction(int id)
{
ModelState.Remove("Id");
MyViewModel model = ...
return View(model);
}