[英]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.