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

表单外部的视图数据正确呈现,但viewdata表单内部却没有。到底是怎么回事?

4

2 回答 2

2

Html.Hidden 助手首先查找ModelState字典。这可能是一个原因。

于 2011-02-25T06:02:07.057 回答
2

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

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

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

于 2011-02-25T07:26:15.770 回答