在发布期间从传递数据
本文关键字:数据 布期间 | 更新日期: 2023-09-27 18:00:57
我是ASP.NET MVC 5的新手,部分视图有问题。
在局部视图中,我放置了一个与名为comment的视图模型一起使用的表单,而主视图与另一个名为photo的模型一起使用。
我遇到的问题是,我无法将照片的id从主视图传递到包含注释模型的局部视图。
我试过这个:
在主视图中:
@Html.Partial("CommentsPartial", new ViewDataDictionary() {{"id", @Model.PhotoID}})
在局部视图中:
@using (Html.BeginForm("AddComment", "PhotoSharing", FormMethod.Post, ViewData["id"]))
但是CCD_ 1总是空
@using (Html.BeginForm("AddComment", "PhotoSharing", FormMethod.Post, ViewData["id"]))
应该呈现如下内容:
<form action="PhotoSharing/AddComment" method="Post" id="1">
如果您熟悉html,您应该知道表单元素上的属性不会传递回Web服务器。相反,您应该使用其中一种:
<input type="hidden" name="id" value="@ViewData["id"]" />
或更多Asp.Net MVC风格:
@Html.Hidden("id", ViewData["id"])
在回发时,您必须重新填充ViewData
,因为它不是有状态的:
public ActionResult AddComment(string id)
{
ViewData["id"] = id;
}
在您的情况下,您需要使用此RenderPartial(HtmlHelper, String, ViewDataDictionary)
MSDN Link
像这样:
@Html.RenderPartial("PartialViewName", new ViewDataDictionary { { "id", Model.PhotoID } });
请注意这将覆盖所有其他视图默认拥有的默认ViewData。如果您要向ViewData添加任何内容,那么它将不会在您传递给部分视图的新字典中。
并在部分视图中的任何位置访问上述id作为ViewBag["id"]
。