この部分的なビューがあると仮定します。
Your name is <strong>@firstName @lastName</strong>
次のような子のみのアクションを介してアクセスできます。
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
そして、私はこの部分ビューを別のビュー内で使用したい:
@Html.RenderPartial("FullName")
つまり、firstNameとlastNameをビューから部分ビューに渡すことができるようにしたいのです。どうすればいいですか?
このオーバーロードを使用します( MSDNのRenderPartialExtensions.RenderPartial
):
public static void RenderPartial(
this HtmlHelper htmlHelper,
string partialViewName,
Object model
)
そう:
@{Html.RenderPartial(
"FullName",
new { firstName = model.FirstName, lastName = model.LastName});
}
ViewDataを使用する場合の別の方法を次に示します。
@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })
渡された値を取得するには:
@{
string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
ビューモデルを作成する必要があります。このようなことを行う必要があります...
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
に応じてアクセスできます。
次のように、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);