Предположим, что у меня есть этот частичный вид:
Your name is <strong>@firstName @lastName</strong>
доступный через дочернее действие, например:
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
И я хочу использовать этот частичный вид внутри другого представления с помощью:
@Html.RenderPartial("FullName")
Другими словами, я хочу иметь возможность передать firstName ans lastName из представления в частичное представление. Как мне это сделать?
Ответ 1
Используйте эту перегрузку (RenderPartialExtensions.RenderPartial
в MSDN):
public static void RenderPartial(
this HtmlHelper htmlHelper,
string partialViewName,
Object model
)
так:
@{Html.RenderPartial(
"FullName",
new { firstName = model.FirstName, lastName = model.LastName});
}
Ответ 2
Вот еще один способ сделать это, если вы хотите использовать ViewData:
@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })
И для получения переданных значений:
@{
string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
Ответ 3
Вам нужно создать модель представления. Что-то вроде этого должно сделать...
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
соответственно.
Ответ 4
убедитесь, что вы добавили {} вокруг Html.RenderPartial, как:
@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}
не
@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});
Ответ 5
Следующее работает для меня на dotnet 1.0.1:
./ourView.cshtml
@Html.Partial(
"_ourPartial.cshtml",
new ViewDataDictionary(this.ViewData) {
{
"hi", "hello"
}
}
);
./_ ourPartial.cshtml
<h1>@this.ViewData["hi"]</h1>
Ответ 6
Просто:
@Html.Partial("PartialName", Model);