我有帖子,有像
这样的常用代码if (!ModelState.IsValid)
{
return View("Edit", viewModel);
}
在编辑视图中我调用生成PartialView的Action
@Html.Action("GetFields","Field", new {Id = Model.Id})
我的行动
[ChildActionOnly]
public ActionResult GetFields(int? Id)
{
...
}
在此操作中ModelState
是新的,与后期操作中的ModelState
不同
有没有办法在行动和他的孩子行动之间存储ModelState
?
(我知道我可以使用TempData
(目前我在项目中使用它)等存储此信息,我想知道是否存在另一种方式,我的意思是,如果框架包含现成的解决方案或机会通过字段访问)
更新
ControllerContext.ParentActionViewContext.ViewData.ModelState返回用于后期操作的ModelState
答案 0 :(得分:2)
看起来没有复制就无法做到。
我可以使用它来访问ModelState,
this.ControllerContext.ParentActionViewContext.ViewData.ModelState;
对象ViewData
包含很多来自父操作的内容,但是ModelState呢?
它包含新的ModelState。它甚至没有二传手。来自消息来源
public class ViewDataDictionary : IDictionary<string, object>
{
private readonly ModelStateDictionary _modelState = new ModelStateDictionary();
public ModelStateDictionary ModelState
{
get { return _modelState; }
}
其他字段(如Model,ModelMetadata等)使用来自父控制器的值进行设置,因为ModelState仅在此操作中为constructo创建键值对,使用它而不是来自父级。