我确实有个愚蠢的问题。
我有一个ASP.NET MVC页面,该页面绝对拒绝显示我的视图模型。即使我删除了分配给viewmodel的数据库结果,并只是在控制器内部的viewmodel属性中硬编码了我想要的值,它仍然不起作用。在调试过程中,我可以看到将正确的数据从控制器内部放入了ViewModel内,但是View却像从不获取数据一样。使用quickwatch,我可以看到数据在字段内部。
它会在LabelFors中显示它正在使用的变量的名称,但绝不会在文本框中显示该变量的值。
看法
@model Project1.ViewModels.OrderNoLocationViewModel
@{ Html.EnableClientValidation(); }
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<table class="item-display" style="width: 100%;">
<tr>
<td class="label">
<div class="editor-label">@Html.LabelFor(model => model.Shipper):</div>
</td>
<td class="value">
<div class="editor-field">
@Html.TextBoxFor(model => model.Shipper)
@Html.ValidationMessageFor(model => model.Shipper)
</div>
</td>
</table>
}
控制器
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult Index(OrderNoLocationViewModel model, string consigneeFilter, string orderNoFilter, string button)
{
model = new OrderNoLocationViewModel()
{
Shipper = "Ray"
};
return View(model);
}
我不知道发生了什么...我还有其他工作页面,这实际上是唯一这样工作的页面。
请帮忙!:(
编辑:
路线
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
目前尚不清楚您要在这里做什么或为什么要这样做。如果要显示表单以编辑的属性,请OrderNoLocationViewModel
首先使用GET方法显示该表单
public ActionResult Index()
{
var model = model = new OrderNoLocationViewModel();
model.Shipper = "Ray";
return View(model);
}
现在,文本框将显示“ Ray”。
当您发回到
[HttpPost]
public ActionResult Index(OrderNoLocationViewModel model)
{
}
model.Shipper
将包含文本框中任何内容的值(如果用户未更改该值,则为“ Ray”)。
像在POST方法中所做的那样重新分配模型
model = new OrderNoLocationViewModel()
{
Shipper = "Ray"
};
return View(model);
除非您清除ModelState
(视图从中获取值ModelState
),否则没有任何影响。我认为你的情况的初始值Shipper
是null
或string.Empty
使返回视图时,它仍然null
还是string.Empty
要看到这项工作,修改POST方法
[HttpPost]
public ActionResult Index(OrderNoLocationViewModel model)
{
ModelState.Clear();
model.Shipper = "Some other value";
return View(model);
}
文本框现在将包含“某些其他值”。但是,这并不是您真正想要做的事情,因为清除操作ModelState
也会清除所有验证错误
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句