usar - ¿Cómo pasar parámetros a una vista parcial en ASP.NET MVC?
pasar datos entre controladores mvc (6)
Supongamos que tengo esta vista parcial:
Your name is <strong>@firstName @lastName</strong>
que es accesible a través de una acción solo para niños como:
[ChildActionOnly]
public ActionResult FullName(string firstName, string lastName)
{
}
Y quiero usar esta vista parcial dentro de otra vista con:
@Html.RenderPartial("FullName")
En otras palabras, quiero poder pasar firstName ans lastName de view a partial view. ¿Cómo debo hacer eso?
Aquí hay otra forma de hacerlo si quiere usar ViewData:
@Html.Partial("~/PathToYourView.cshtml", null, new ViewDataDictionary { { "VariableName", "some value" } })
Y para recuperar los valores pasados:
@{
string valuePassedIn = this.ViewData.ContainsKey("VariableName") ? this.ViewData["VariableName"].ToString() : string.Empty;
}
Lo siguiente está funcionando para mí en dotnet 1.0.1 :
./ourView.cshtml
@Html.Partial(
"_ourPartial.cshtml",
new ViewDataDictionary(this.ViewData) {
{
"hi", "hello"
}
}
);
./_ourPartial.cshtml
<h1>@this.ViewData["hi"]</h1>
Necesita crear un modelo de vista. Algo como esto debería hacer ...
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;
}
}
luego, desde su resultado de acción, pase el modelo
return View("FullName", new FullNameViewModel("John", "Doe"));
y podrá acceder a @Model.FirstName
y @Model.LastName
consecuencia.
Sólo:
@Html.Partial("PartialName", Model);
Use esta sobrecarga ( RenderPartialExtensions.RenderPartial
en MSDN ):
public static void RenderPartial(
this HtmlHelper htmlHelper,
string partialViewName,
Object model
)
asi que:
@{Html.RenderPartial(
"FullName",
new { firstName = model.FirstName, lastName = model.LastName});
}
asegúrese de agregar {} alrededor de Html.RenderPartial, como:
@{Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});}
no
@Html.RenderPartial("FullName", new { firstName = model.FirstName, lastName = model.LastName});