vistas vista usar una pasar parciales parcial pagina mvc multiples modelos misma entre datos controladores como cargar asp.net-mvc model-view-controller asp.net-mvc-3 controller partial-views

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.Vi‌​ewData) { { "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});