我有MVC3 razor
个申请。在我提交表单并在Action
我正在更改ViewModel
内容后,我无法看到填充的新值。
在MVC2
中有一个关于此问题的话题,其中有人说它可以在MVC3
中修复
http://aspnet.codeplex.com/workitem/5089?ProjectName=aspnet
你能说出是否有选项可以做到这一点,或者更好的方法(解决方法)在没有使用回发的情况下更新UI?
动作:
[HttpPost]
public ActionResult Index(MyViewModel model)
{
model.Value = "new value"
return View("Index", model);
}
UI:
@Html.HiddenFor(x => x.Value)
视图模型:
public class MyViewModel
{
public string Value { get;set; }
}
答案 0 :(得分:1)
看起来它正在使用已发布的ModelState值。
如果使用ModelState.Clear()
清除ModelState,则您设置的新值应位于隐藏字段中。
答案 1 :(得分:0)
您应该使用form
并post
行动。
@model MyViewModel
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.HiddenFor(x=>x.Value)
<input type="submit" value="Submit" />
}
<强>控制器强>
//
public ActionResult Index()
{
MyViewModel model = new MyViewModel();
model.Value = "old value";
return View("Index", model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
//get posted model values (changed value by view "new value")
string changed_value = model.Value;
// you can return model again if your model.State is false or after update
return View("Index", model);
}