Предположим, у меня есть это частичное представление:
Your name is <strong>@firstName @lastName</strong>
который доступен только через дочернее действие, например:
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
И я хочу использовать это частичное представление внутри другого представления с:
@Html.RenderPartial("FullName")
Другими словами, я хочу иметь возможность передавать firstName и lastName из представления в частичное представление. Как мне это сделать?
Ответы:
Используйте эту перегрузку (
RenderPartialExtensions.RenderPartial
в MSDN ):public static void RenderPartial( this HtmlHelper htmlHelper, string partialViewName, Object model )
так:
@{Html.RenderPartial( "FullName", new { firstName = model.FirstName, lastName = model.LastName}); }
источник
@Html.Partial()
то же самое,@{Html.RenderPartial();}
но намного красивее. У них тоже есть такие же перегрузки.Model.firstName
и их как выбросить исключение,object doesn't have a 'firstName' property
Вот еще один способ сделать это, если вы хотите использовать 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);
источник