2009-06-01 40 views
6

Tengo un problema, tengo un enlace ajax que pasa un parámetro, pero la página que abre no necesita ese parámetro. La página solo carga 2 vistas parciales, una de ellas necesita que el parámetro pase a la página para cargar los datos correctamente, y la otra solo necesita cargar un formulario, por lo tanto, no necesita ese parámetro. ¿Cómo puedo lograr esto?asp.net mvc parámetro de la página a una vista parcial

Respuesta

0

// Controlador

public ActionResult EditFunctions(int id) 
    { 

     var sysfunctions= UnisegurancaService.FunctionsRepository.All(); 
     return View(sysfunctions); 
    } 
    // This is the controller (it does no need the parameter "ID") 

// Esta es la vista "EditFunctions"

<div id="formFunction"> 
<% Html.RenderPartial("FormFunction"); %> 
</div> 


<div id="gridFunction"> 
<% Html.RenderPartial("GridFunction"); %> // The grid needs the ID to work correctly but its in the parent page not in the partial call....and the call is an ajax call 
</div> 
+0

¿Su vista parcial de GridFunction está fuertemente tipada? –

6

Con el fin de hacer lo que quiera, tendrá que añadir el ID de la construcción ViewData.

var sysfunctions= UnisegurancaService.FunctionsRepository.All(); 
ViewData["NeededID"] = id 
return View(sysfunctions); 

entonces en su vista en la que rinde el moldeada parcial

<%= Html.RenderPartial("GridFunction", (int)ViewData["NeededID"]) %> 

como se requiere por supuesto.

Todo lo que se empuja como el segundo param se convierte en el .Model en el parcial. Sugeriría que escribas fuertemente tus parciales.

+0

Lo siento ... tipo error ... corregido –

+0

No hay problema. He hecho que mi respuesta sea más útil. Si no desea escribir fuertemente sus parciales (lo que le sugiero que los escriba), el consejo de eu-ge-ne con ViewDataDictionary es mejor. –

3

Prueba esto:

<% Html.RenderPartial("GridFunction", new ViewDataDictionary {{"Id", ViewData["Id"]}}); %> 

Actualizado:

y añadir en su acción de controlador:

ViewData["Id"] = Id; 

Actualizado:

Y en su parti GridFunction Ver al que puede acceder Id como:

<%= ViewData["Id"] %> 
0

Si alguna dependencia de la página necesita el parámetro, la página necesita saber lo suficiente como para pasar los datos en, por lo que la página debe ser capaz de proporcionar los datos. O, más simplemente, simplemente agregue el parámetro a la vista de la página y termine con él.

Cuestiones relacionadas