Frage

Hallo im neuen zu MVC und ich habe ohne Glück kramt, wie MVC User Controls zu bauen, haben Viewdata sie zurückgegeben. Ich habe gehofft, jemand würde einen Schritt für Schritt-Lösung veröffentlichen, wie dieses Problem zu nähern. Wenn Sie könnten Ihre Lösung sehr detailliert machen, die sehr helfen würde.

Es tut sich mit meiner Frage so diskret zu sein, würde Ich mag nur, dass zu klären, was Im ultimatly zu tun versucht, ist eine ID an eine Steuerung Action Methode übergeben und wollten sie die Kontrolle an einen Benutzer zu machen, direkt aus dem Controller selbst. Im nicht sicher, wie man mit diesem Ansatz beginnen und sich fragen, ob dies überhaupt möglich ist. Es wird im Wesentlichen in meinem Kopf wie folgt 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 Ich möchte die Objekte dieser Aufzeichnung machen, und das ist mein Problem.

War es hilfreich?

Lösung

Wenn ich Ihre Frage verstehen, versuchen Sie Viewdata in die Benutzersteuerung zu übergeben. Eine Benutzersteuerung ist im Wesentlichen eine Teilansicht, so können Sie dies tun würden:

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

Jetzt in Ihrem Usercontrol wird Viewdata sein, was Sie nur in ...

Andere Tipps

OK hier geht es - Wir verwenden Json Daten

In der aspx Seite haben wir einen Ajax-Aufruf, der den Controller aufruft. Sehen Sie die verfügbare Option Parameter für Ajax-Aufrufe.

url:. Dies ruft die Funktion in der Klasse (natürlich) Unser Klassenname ist Jobcontroller, Funktionsname ist updateJob und es braucht keine Parameter. Die URL fällt die controllerPortion aus dem Klassennamen. Zum Beispiel die updateJob Funktion aufzurufen, würde 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, dies wird Ihnen zu einem guten Start. Viel Glück

Ich bin ziemlich sicher, dass View-Daten zugänglich innerhalb Benutzer steuert so lange, wie Sie System.Web.Mvc.ViewUserControl verlängern und geben es in ich ein Code-Snippet haben.

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

und von innerhalb meiner CategoryChooser Bildschirmtextsystem zugänglich ist.

Nicht sicher, ob ich das Problem vollständig zu verstehen, aber hier ist meine Antwort auf.

„Wie ein User Control auf Ihr ASP.NET MVC-Projekt hinzufügen“

In Visual Studio 2008 können Sie Element hinzufügen wählen. In den Kategorien auf der linken Seite können Sie Visual C #> Internet> MVC wählen. Es ist eine Option MVC Ansicht User Control. Wählen Sie es aus, wählen Sie einen Namen, wählen Sie die gewünschte Master-Seite und Sie sind gut zu gehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top