2016-12-29 2 views
1

Ist es möglich, ein Verfahren anstelle einer Eigenschaft für einDropDownListFor Methode statt Eigenschaft

zu verwenden Dies funktioniert:

HTML.DropDownListFor(x => x.Book, 
        new SelectList(ViewBag.Books, 
            "ID", 
            "Title", 
            new { @class = "form-control"})) 

, die ich getestet nicht:

HTML.DropDownListFor(x => x.Book, 
        new SelectList(ViewBag.Books, 
            "ID", 
            "ToString()", 
            new { @class = "form-control"})) 

Ist Gibt es irgendeinen Weg dies zu tun?

+1

können Sie die usecase für das erklären? In welchem ​​Szenario brauchen Sie das? –

+0

Nun, ich mache etwas Selbststudium auf dem Front-End-Teil von ASP.net und es war einfach etwas, auf das ich gestoßen bin. Ich bin ein Back-End-Entwickler, aber ich habe mich gefragt, ob solche Dinge möglich sind. Wenn es ist, kann ich es in einigen Designs zum Beispiel Namen von Menschen verwenden. – StuiterSlurf

+0

Die einfache Antwort ist nein. Weitere Informationen finden Sie in der Dokumentation des 'SelectList' Klassenkonstruktors – Shyju

Antwort

-2

fand ich eine Lösung für sie. Für jeden, der daran interessiert ist, das ist, was funktioniert:

book.cs

public class Book 
{ 
    [HiddenInput(DisplayValue = false)] 
    public Guid ID { get; set; } 

    [Display(Name = "Booktitle")] 
    public string Title { get; set; } 
    [Required] 
    [Display(Name = "Voornaam")] 
    public string AuthorFirstName { get; set; } 
    [Required] 
    [Display(Name = "Tussenvoegsel")] 
    public string AuthorLastName { get; set; } 

    public string FullName 
    { 
     get { return CompleteName(); } 
    } 

    private string CompleteName() 
    { 
     return this.AuthorFirstName + " " + this.AuthorLastName; 
    } 
} 

View.cshtml:

@Html.DropDownListFor(x => x.Book, new SelectList(ViewBag.Books, "ID", "FullName"), new { @class = "form-control" }) 
+0

Workaround für was ?! ! .. Ihre Antwort nicht auf Ihre Frage neu plattiert .. Sie binden es an Eigentum wie MSDN sagte und alle beantwortet zu Ihnen ... Ihre Frage war, kann ich es an Methode binden? –

+0

Nun können Sie die Methode mit einer Eigenschaft zurückgeben. Dann können Sie die Methode in DropDownListFor verwenden. – StuiterSlurf

+0

Nein, Sie können keine Methode verwenden, Sie können nur die Eigenschaft "FullName" verwenden. Was Sie nicht als Workaround getan haben, ist eine Eigenschaft, die zugewiesen wird –

1

Nein, Sie können keine Funktion weitergeben. Wenn Sie zur SelectList MSDN-Dokumentation zurückkehren, finden Sie keine Überschreibung für die Take-Funktion.

SelectList MSDN

+1

Dies ist mehr ein Kommentar. – mybirthname

+0

mehr ein Kommentar? was ist das mittlere ? –

+0

Ich meine, das sollte ein Kommentar Link Antwort sind nicht gut genug. Sie sollten zumindest einige Zitate von diesem Link-Ort eingeben. – mybirthname