9

Hola soy nuevo en MVC y he explorado sin suerte sobre cómo crear controles de usuario MVC que tengan devuelto ViewData. Esperaba que alguien publicara una solución paso a paso sobre cómo abordar este problema. Si pudieras hacer tu solución muy detallada, sería de gran ayuda.Controles de usuario de MVC + ViewData

Disculpe por ser tan discreto con mi pregunta, me gustaría aclarar que lo que estoy tratando de hacer es pasar una identificación a un método de acción de control y querer renderizarlo en un control de usuario directamente desde el controlador mismo. No estoy seguro de cómo comenzar con este enfoque y me pregunto si esto es posible. Será esencialmente en mi mente este aspecto

public ActionResult RTest(int id){ 
RTestDataContext db = new RTestDataContext(); 
var table = db.GetTable<tRTest>(); 
var record = table.SingleOrDefault(m=> m.id = id); 

return View("RTest", record); 
} 

y en mi control de usuario que le gustaría hacer que los objetos de ese registro y eso es mi problema.

Respuesta

8

Si entiendo su pregunta, está tratando de pasar ViewData al control del usuario. Un control de usuario es esencialmente una vista parcial, por lo que podría hacer esto:

<% Html.RenderPartial("someUserControl.ascx", viewData); %> 

En su usercontrol, ViewData será todo lo que ha pasado en ...

+0

Te refieres a <% Html.RenderPartial ("someUserControl", viewData); %> si coloca su archivo en la carpeta Shared –

0

Estoy bastante seguro de datos de vista es accesible dentro de los controles de usuario, siempre y cuando usted extiende System.Web.Mvc.ViewUserControl y lo pasa en Tengo un fragmento de código:.

<%Html.RenderPartial("~/UserControls/CategoryChooser.ascx", ViewData);%> 

y desde dentro de mi CategoryChooser ViewData es accesible.

0

No estoy seguro si entiendo su problema por completo, pero esta es mi respuesta a "Cómo agregar un control de usuario a su proyecto ASP.NET MVC".

En Visual Studio 2008, puede elegir Agregar elemento. En las categorías del lado izquierdo, puede elegir Visual C#> Web> MVC. Hay una opción MVC View User Control. Selecciónalo, elige un nombre, selecciona la página maestra deseada y listo.

1

bien aquí va - Utilizamos datos JSON

En la página aspx tenemos una llamada AJAX que llama al controlador. Busque los parámetros de opciones disponibles para las llamadas ajax.

url: Esto llama a la función en la clase. (Obviamente) Nuestro nombre de clase es JobController, el nombre de la función es updateJob y no necesita ningún parámetro. La url elimina el controladorPortion del nombre de clase. Por ejemplo, para llamar a la función updateJob, la url sería '/ Job/UpdateJob /'.

var data = {x:1, y:2}; 
$.ajax({ 
data: data, 
cache: false, 
url: '/ClassName/functionName/parameter', 
dataType: "json", 
type: "post", 
success: function(result) { 
//do something 
}, 
error: function(errorData) { 
alert(errorData.responseText); 
} 
} 
); 

En la Clase JobController:

public ActionResult UpdateJob(string id) 
{ 
    string x_Value_from_ajax = Request.Form["x"]; 
    string y_Value_from_ajax = Request.Form["y"]; 
    return Json(dataContextClass.UpdateJob(x_Value_from_ajax, y_Value_from_ajax)); 
} 

Tenemos una página Global.asax.cs que mapea las llamadas ajax.

public class GlobalApplication : System.Web.HttpApplication 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute("Default",     // Route name 
    "{controller}/{action}/{id}",  // URL with parameters 
     new { controller = "EnterTime", action = "Index", id = "" } // Parameter defaults (EnterTime is our default controller class, index is our default function and it takes no parameters.) 
    ); 
    } 
} 

Espero que esto te lleve a un buen comienzo. Buena suerte

Cuestiones relacionadas