【问题标题】:DropDownListFor method instead of propertyDropDownListFor 方法而不是属性
【发布时间】:2016-12-29 21:06:44
【问题描述】:

是否可以使用方法代替属性

这行得通:

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

有什么办法吗?

【问题讨论】:

  • 你能解释一下这个用例吗?在什么情况下你需要它?
  • 嗯,我正在对 ASP.net 的前端部分进行一些自学,这只是我遇到的。我是一名后端开发人员,但我想知道这样的事情是否可能。如果是,我可以在某些设计中使用它,例如人名。
  • 简单的答案是否定的。有关更多详细信息,请查看SelectList 类构造函数的文档
  • 我已阅读文档,但有时这里的人知道解决方法。这就是为什么我想知道是否有人知道这样做的方法。

标签: c# asp.net asp.net-mvc razor html.dropdownlistfor


【解决方案1】:

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

SelectList MSDN

【讨论】:

  • 这更像是一条评论。
  • 更多评论?!这是什么意思?
  • 我的意思是这应该是一个评论链接答案还不够好。您至少应该从这个链接位置引用一些引号。
  • 根据问题,他问了一个简单的问题“我可以传递一个函数吗”,答案是否定的,我已经包含了msdn链接..不需要引号..msdn链接很好参考
【解决方案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" })

【讨论】:

  • 解决方法是什么?!! ..您的答案没有重新回答您的问题..您将其绑定到 MSDN 所说的属性,并且全部回答了您...您的问题是我可以将其绑定到方法吗??
  • 你可以返回带有属性的方法。然后就可以使用 DropDownListFor 中的方法了。
  • 不,你不能使用方法,你只能使用属性“FullName” ..你没有解决方法,它是一个属性分配
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 2011-07-23
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
相关资源
最近更新 更多