簡體   English   中英

如何將參數傳遞給 ASP.NET MVC 中的局部視圖?

[英]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.Vi‌​ewData) {
    {
      "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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM