97

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

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

次のような子のみのアクションからアクセスできます。

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

}

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

@Html.RenderPartial("FullName")

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

4

7 に答える 7

90

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

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

そして、渡された値を取得するには:

@{
    string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
于 2015-08-19T02:17:38.680 に答える
78

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

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

それで:

@{Html.RenderPartial(
    "FullName",
    new { firstName = model.FirstName, lastName = model.LastName});
}
于 2011-07-01T14:52:10.683 に答える
25

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

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

于 2011-07-01T14:57:43.440 に答える
14

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

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

いいえ

@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
于 2011-07-01T16:20:36.130 に答える