Как передать параметры частичному виду в ASP.NET MVC?
предположим, что у меня есть частичный вид:
Your name is <strong>@firstName @lastName</strong>
который доступен только через дочерние действия, такие как:
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
и я хочу использовать этот частичный вид в другой вид:
@Html.RenderPartial("FullName")
другими словами, Я хочу иметь возможность передавать firstName и lastName из представления в частичное представление. Как мне это сделать?
6 ответов:
используйте эту перегрузку (
RenderPartialExtensions.RenderPartialна MSDN):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:
./ наш взгляд.cshtml
@Html.Partial( "_ourPartial.cshtml", new ViewDataDictionary(this.ViewData) { { "hi", "hello" } } );./_ourPartial.cshtml
<h1>@this.ViewData["hi"]</h1>
Comments