如何在表单中获取ViewData才能正确显示?

时间:2011-02-25 01:04:52

标签: asp.net-mvc viewdata hidden-field

<%:ViewData["galleryId"]%>
<% using (Html.BeginForm(
             "FinishEdit" , 
             "GalleryManager" , 
             FormMethod.Post , 
             new { enctype = "multipart/form-data" }
             )
         ) 
   {%>
    <%:Html.Hidden("galleryId" , ViewData["galleryId"])%>
<% } %>

表单外部的视图数据正确呈现,但表单内的viewdata没有。发生了什么事?

2 个答案:

答案 0 :(得分:2)

Html.Hidden helper查找第一个ModelState字典。这可能是一个原因。

答案 1 :(得分:2)

如果您打算修改任何POSTed变量并渲染相同的视图,请尝试清除控制器操作中的模型状态:

[HttpPost]
public ActionResult FinishEdit()
{
    ...
    ModelState.Remove("galleryId");
    ViewData["galleryId"] = "some new gallery id";
    return View();
}

Html助手首先在ViewData和Model之前查看模型状态字典值。