在发布期间从传递数据

本文关键字:数据 布期间 | 更新日期: 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"]