9

Hallo ich bin neu in MVC und ich habe herumgefischt ohne Glück, wie MVC-Benutzersteuerelemente zu erstellen, die ViewData zurückgegeben haben. Ich hatte gehofft, dass jemand eine Schritt-für-Schritt-Lösung veröffentlichen würde, wie man dieses Problem angehen könnte. Wenn Sie Ihre Lösung sehr detailliert machen könnten, würde das sehr hilfreich sein.MVC User Controls + ViewData

Sorry für so diskret mit meiner Frage, möchte ich nur klar, dass was Ultimate versucht zu tun ist, übergeben Sie eine ID zu einem Controller actionresult-Methode und will es auf eine Benutzersteuerung direkt aus dem Controller selbst rendern. Ich bin nicht sicher, wie ich mit diesem Ansatz anfangen soll und frage mich, ob das überhaupt möglich ist. Es wird im Wesentlichen in meinem Kopf so aussehen

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

und in meinem User Control würde Ich mag die Objekte dieser Aufzeichnung machen, und das ist mein Problem.

Antwort

8

Wenn ich Ihre Frage verstehe, versuchen Sie, ViewData in das Benutzersteuerelement zu übergeben. Eine Benutzersteuerung ist im Wesentlichen eine Teilansicht, so dass Sie dies tun würden:

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

Nun wird Viewdata sein, was Sie nur in ...

+0

Sie meinen <% Html.RenderPartial ("someUserControl", viewData); %> wenn Sie Ihre Datei im freigegebenen Ordner ablegen –

0

Ich bin ziemlich sicher, dass Ansicht Daten innerhalb Bedienelemente zugänglich ist, solange Sie System.Web.Mvc.ViewUserControl verlängern und geben es in ich ein Code-Snippet haben.

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

und aus meiner CategoryChooser ViewData ist zugänglich.

0

nicht sicher, ob ich Ihr Problem vollständig zu verstehen, Aber hier ist meine Antwort auf "Wie Sie ein Benutzersteuerelement zu Ihrem ASP.NET MVC-Projekt hinzufügen".

In Visual Studio 2008 können Sie Artikel hinzufügen auswählen. In den Kategorien auf der linken Seite können Sie Visual C#> Web> MVC auswählen. Es gibt eine Option MVC View User Control. Wählen Sie es aus, wählen Sie einen Namen, wählen Sie die gewünschte Masterseite und Sie können loslegen.

1

OK hier geht es - Wir verwenden Json Daten

In der aspx Seite wir einen Ajax-Aufruf haben, die den Controller aufruft. Suchen Sie die verfügbaren Optionsparameter für AJAX-Aufrufe.

url: Dies ruft die Funktion in der Klasse. (Offensichtlich) Unser Klassenname ist JobController, Funktionsname ist UpdateJob und es dauert keine Parameter. Die URL löscht die controllerPortion aus dem Klassennamen. Um zum Beispiel die Funktion updateJob aufzurufen, wäre die URL '/ 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); 
} 
} 
); 

In der Jobcontroller Klasse:

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

Wir haben eine Global.asax.cs Seite, die die Ajax-Aufrufe abbildet.

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

Ich hoffe, das bringt Sie zu einem guten Start. Viel Glück

Verwandte Themen