2016-12-29 67 views
1

是否有可能在财产的代替使用方法的DropDownListFor方法,而不是财产

这工作:

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

我测试不会:

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

是有没有办法做到这一点?

+1

你能解释这种情况的用例?在什么情况下你需要那个? –

+0

那么我在ASP.net的前端部分做了一些自学,这只是我遇到的。我是后端开发人员,但我想知道这样的事情是否可能。如果是这样,我可以在一些设计中使用它,例如人名。 – StuiterSlurf

+0

简单的答案是否定的。有关更多详细信息,请查看“SelectList”类构造函数的文档 – Shyju

回答

-2

我找到了一个解决方法吧。 对于任何人谁是感兴趣,这是什么在起作用:

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

解决方法是什么? ! ..你的回答没有重新覆盖到你的问题..你将它绑定到属性,如MSDN说,所有回答你...你的问题是我可以将其绑定到方法? –

+0

那么你可以返回一个属性的方法。然后你可以在DropDownListFor中使用该方法。 – StuiterSlurf

+0

不,你不能使用方法,你只能使用财产“FullName”..你没有一个解决方法,它是一个属性分配 –

1

不,你不能传递一个函数,如果你回到SelectList MSDN文档,你不会找到它的任何覆盖函数。

SelectList MSDN

+1

这是更多评论。 – mybirthname

+0

更多评论?!那什么意识 ? –

+0

我的意思是这应该是一个评论链接的答案不够好。您至少应该从该链接位置放置一些引号。 – mybirthname