[英]How to pass parameters to a partial view in ASP.NET MVC?
假设我有这个部分观点:
Your name is <strong>@firstName @lastName</strong>
可以通过仅限儿童的操作访问,例如:
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
我想在另一个视图中使用这个局部视图:
@Html.RenderPartial("FullName")
换句话说,我希望能够将 firstName 和 lastName 从视图传递到部分视图。 我该怎么做?
如果您想使用 ViewData,这是另一种方法:
@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })
并检索传入的值:
@{
string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
使用这个重载( MSDN 上的RenderPartialExtensions.RenderPartial
):
public static void RenderPartial(
this HtmlHelper htmlHelper,
string partialViewName,
Object model
)
所以:
@{Html.RenderPartial(
"FullName",
new { firstName = model.FirstName, lastName = model.LastName});
}
您需要创建一个视图 model。 这样的事情应该做...
public class FullNameViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public FullNameViewModel() { }
public FullNameViewModel(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
}
然后从您的操作结果中传递 model
return View("FullName", new FullNameViewModel("John", "Doe"));
并且您将能够相应地访问@Model.FirstName
和@Model.LastName
。
确保在 Html.RenderPartial 周围添加 {},如下所示:
@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}
不是
@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
以下在dotnet 1.0.1上为我工作:
./ourView.cshtml
@Html.Partial(
"_ourPartial.cshtml",
new ViewDataDictionary(this.ViewData) {
{
"hi", "hello"
}
}
);
./_ourPartial.cshtml
<h1>@this.ViewData["hi"]</h1>
只是:
@Html.Partial("PartialName", Model);
@{
Html.RenderPartial("_partialViewName", null, new ViewDataDictionary { { "Key", "Value" } });
}
在你想展示你的部分的地方,
@{
string valuePassedIn = this.ViewData.ContainsKey("Key") ? this.ViewData["Key"].ToString() : string.Empty;
}
在渲染的局部视图中,
使用 valuePassedIn --> @valuePassedIn
我刚遇到这个问题,我也有类似的情况
我的问题如下:我需要将多个变量传递给我创建的局部视图
我创建的解决方案
@{ await Html.RenderPartialAsync("YourPartialViewName",new { NumberOfProducts = ViewData["NumberOfProducts"], UserName = ViewData["UserName"] }); }
在上面的代码中,我创建了一个匿名的 object 并发送到视图,下面的代码解释了如何检索通过这个 object 发送的数据
<span> @Model.UserName </span> <span> @Model.NumberOfProducts </span>
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.