web-dev-qa-db-ja.com

ASP.NET MVCの部分ビューにパラメータを渡す方法は?

この部分的なビューがあると仮定します。

Your name is <strong>@firstName @lastName</strong>

次のような子のみのアクションを介してアクセスできます。

[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{

}

そして、私はこの部分ビューを別のビュー内で使用したい:

@Html.RenderPartial("FullName")

つまり、firstNameとlastNameをビューから部分ビューに渡すことができるようにしたいのです。どうすればいいですか?

84
Saeed Neamati

このオーバーロードを使用します( MSDNのRenderPartialExtensions.RenderPartial ):

public static void RenderPartial(
    this HtmlHelper htmlHelper,
    string partialViewName,
    Object model
)

そう:

@{Html.RenderPartial(
    "FullName",
    new { firstName = model.FirstName, lastName = model.LastName});
}
76
David Wick

ViewDataを使用する場合の別の方法を次に示します。

@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })

渡された値を取得するには:

@{
    string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
73
Garry English

ビューモデルを作成する必要があります。このようなことを行う必要があります...

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;
     }

}

その後、アクションの結果からモデルを渡します

return View("FullName", new FullNameViewModel("John", "Doe"));

@Model.FirstNameおよび@Model.LastNameに応じてアクセスできます。

24
simonlchilds

次のように、Html.RenderPartialの周りに{}を追加してください。

@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}

じゃない

@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
13
BlackTigerX

以下はdotnet 1.0.1で私のために働いています:

./ ourView.cshtml

@Html.Partial(
  "_ourPartial.cshtml",
  new ViewDataDictionary(this.Vi‌​ewData) {
    {
      "hi", "hello" 
    } 
  }
);

./_ ourPartial.cshtml

<h1>@this.ViewData["hi"]</h1>
3
lakesare

ただ:

@Html.Partial("PartialName", Model);