Wie übergeben Sie mehrere Modell in Ansicht, das in ASP.NET MVC?
Problem ist: ich will laufen 3 verschiedene Aktionen, aber ich habe statt dessen wollen gefüttert werden alle Daten von einer einzigen Aktion in ein größeres Modell.
Ich bin mit:
public class SearchScrapClass
{
public WClass WClass { get; set; }
public SClass SClass { get; set; }
public YClass YClass { get; set; }
}
public class WClass
{
public string title { get; set; }
public string link { get; set; }
}
public class SClass
{
public string title { get; set; }
public string link { get; set; }
}
public class YClass
{
public string title { get; set; }
public string link { get; set; }
}
Verwende ich LINQ, um Daten in diese Modelle.
Ich bin mit :
var wikians = from info in document.DocumentNode.SelectNodes("//div[@id='span']")
from link in info.SelectNodes("div//a").Where(x => x.Attributes.Contains("href"))
select new SearchScrapClass //Main Bigger Class
{
WClass.link= link.Attributes["href"].Value, //ERROR: How to add to WClass's url ?
WClass.title= link.InnerText //ERROR: How to add to WClass's url ?
}
var wikians = from info in document.DocumentNode.SelectNodes("//div[@id='results']")
from link in info.SelectNodes("p//a").Where(x => x.Attributes.Contains("href"))
select new SearchScrapClass //Main Bigger Class
{
YClass.link= link.Attributes["href"].Value, //ERROR: How to add to YClass's url ?
YClass.title= link.InnerText //ERROR: How to add to YClass's url ?
}
//Also for the 3rd class (model)
return View(wikians); //and then return bigger class model so that i can access them in view
Dies ist ein Weg, wie ich die Daten einfügen möchten link und Titel aller Klassen.
Meinen versuchen ist das hinzufügen von Daten zu allen 3 Klassen aus unterschiedlichen Quellen und pass das größere Modell ansehen, so dass ich Zugriff auf alle Klassen wie:
@model SearchScrapClass
@using(Html.BeginForm()) {
@Html.EditorFor(o => o.WClass.link)
...
}
Bitte einen Weg vorschlagen
Dank
- erstellen Sie ein viewmodel, welches alle drei Modelle zusammen und geben den Blick auf das viewmodel.
- Ich bin verwirrt, warum haben Sie 3 verschiedene Klassen, die alle gleich Aussehen? Warum nicht einfach 3 verschiedene Instanzen der gleichen Klasse?
- Actaully, die Logik, die ich gezeigt habe, sieht ähnlich aus wie [etwas modifizierter] aber die Quellen, aus denen Sie die fetch-url und der Inhalt ist anders. Also brauche ich unterschiedliche Klassen.
- ist richtig. Der "richtige" Weg, dies zu tun in MVC ist die Erstellung eines ViewModel, die mit diesen drei Klassen. Die Klassen sind Daten-Modelle. Das ViewModel ist etwas anderes, es sollte enthalten alles, was Ihre Sicht machen muss, richtig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erweitern auf meinen Kommentar, ich würde empfehlen die Erstellung eines ViewModel-Ordner für die Organisation Willen. in diese fügen Sie die view-Modell -
In den controller dann Sie instanziieren die neue viewmodel -
dann in Ihrem Blick hinzufügen, die mit für das viewmodel.
Können Sie mehrere Modell durch die Schaffung einer neuen model-Klasse, die mehrere Objekte enthalten.
Sehen das Tupel tutorial http://www.dotnetperls.com/tuple oder diese http://msdn.microsoft.com/en-us/library/system.tuple(v=vs. 110).aspx
Ähnlichen controller:
Und der Blick:
@Modell-Tupel
welche Logik wenden wir hier " ....fügen Sie in Ihrer Logik zu füllen Ihre Objekte der Klasse hier"