Domanda

Ciao, sono un nuovo utente di MVC e ho pescato senza fortuna su come costruire i controlli utente MVC che hanno restituito ViewData. Speravo che qualcuno pubblicasse una soluzione passo dopo passo su come affrontare questo problema. Se potessi rendere la tua soluzione molto dettagliata, ciò sarebbe di grande aiuto.

Mi dispiace di essere così discreto con la mia domanda, vorrei solo chiarire che ciò che sto cercando di fare in definitiva è passare un ID a un metodo di azione del controller e voler renderlo a un controllo utente direttamente dal controller stesso. Non sono sicuro di come iniziare con questo approccio e mi chiedo se ciò sia persino possibile. Essenzialmente nella mia mente sarà simile a questo

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 nel mio controllo utente vorrei renderizzare gli oggetti di quel record e questo è il mio problema.

È stato utile?

Soluzione

Se capisco la tua domanda, stai provando a passare ViewData nel controllo utente. Un controllo utente è essenzialmente una vista parziale, quindi dovresti farlo:

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

Ora nel tuo controllo utente, ViewData sarà qualunque cosa tu abbia passato ...

Altri suggerimenti

OK qui va - Utilizziamo i dati Json

Nella pagina aspx abbiamo una chiamata ajax che chiama il controller. Cerca i parametri delle opzioni disponibili per le chiamate Ajax.

url: chiama la funzione nella classe. (ovviamente) Il nostro nome di classe è JobController, il nome della funzione è updateJob e non accetta parametri. L'URL elimina controllerPortion dal nome classe. Ad esempio, per chiamare la funzione updateJob l'URL sarebbe '/ 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);
}
}
);

Nella 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));
}

Abbiamo una pagina Global.asax.cs che mappa le chiamate 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.)
    );
  }
}

Spero che questo ti faccia iniziare bene. Buona fortuna

Sono abbastanza sicuro che i dati di visualizzazione siano accessibili all'interno dei controlli utente fintanto che estendi System.Web.Mvc.ViewUserControl e li passi. Ho un frammento di codice:

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

e dall'interno del mio CategoryChooser ViewData è accessibile.

Non sono sicuro di aver compreso completamente il problema, ma ecco la mia risposta a " Come aggiungere un controllo utente al tuo progetto ASP.NET MVC " ;.

In Visual Studio 2008, puoi scegliere Aggiungi elemento. Nelle categorie a sinistra, puoi scegliere Visual C # > Web > MVC. C'è un'opzione MVC View User Control. Selezionalo, scegli un nome, seleziona la pagina principale desiderata e sei a posto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top