MVC User Controls + ViewData
-
03-07-2019 - |
Pergunta
Hi im novo para MVC e eu pescados em torno sem sorte sobre como construir MVC controles de usuário que têm ViewData devolvido a eles. Eu estava esperando que alguém iria publicar uma solução passo a paso sobre como abordar este problema. Se você pudesse fazer sua solução muito detalhado que ajudar muito.
Desculpe por ser tão discreta com a minha pergunta, eu gostaria apenas de esclarecer que o que estou ultimatly tentando fazer é passar um id para um método ActionResult controlador e querer torná-la a um controle do usuário diretamente do próprio controlador. inseguro Im sobre como começar com esta abordagem e se perguntando se isso é mesmo possível. Será essencialmente na minha mente esta aparência
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);
}
e na minha User Control Gostaria de tornar os objetos desse recorde e isso é o meu problema.
Solução
Se entendi sua pergunta, você está tentando passar ViewData para o controle do usuário. Um controle de usuário é essencialmente uma visão parcial, para que você faria isso:
<% Html.RenderPartial("someUserControl.ascx", viewData); %>
Agora, em seu usercontrol, ViewData vai ser tudo o que você passou em ...
Outras dicas
OK aqui vai - Nós usamos dados JSON
Na página aspx temos uma chamada ajax que chama o controlador. Olhe para cima os parâmetros de opções disponíveis para chamadas ajax.
url:. Isso chama a função na classe (obviamente) Nosso nome da classe é JobController, nome da função é updateJob e leva sem parâmetros. O url cai a controllerPortion do classname. Por exemplo, para chamar a função updateJob a url seria '/ 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);
}
}
);
Na Classe 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));
}
Nós temos uma página Global.asax.cs que mapeia as chamadas 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 isso você fica fora de um bom começo. Boa sorte
Tenho a certeza de dados vista é controles de usuário dentro acessíveis, desde que você estender System.Web.Mvc.ViewUserControl e passá-lo em Eu tenho um trecho de código:.
<%Html.RenderPartial("~/UserControls/CategoryChooser.ascx", ViewData);%>
e para dentro do meu CategoryChooser ViewData está acessível.
Não tenho certeza se eu entendo o seu problema completamente, mas aqui está a minha resposta à pergunta "Como adicionar um User Control para o seu projeto ASP.NET MVC".
No Visual Studio 2008, você pode escolher Adicionar Item. Nas categorias no lado esquerdo, você pode escolher Visual C #> Web> MVC. Há uma opção MVC Ver Controle do Usuário. Selecioná-lo, escolher um nome, selecione a página mestre desejado e você está pronto para ir.