如何选择上Html.DropDownListFor显示的文本(How to choose displ

2019-10-21 15:28发布

如何选择哪个属性显示在Html.DropDownListFor了某种类型的?

比如我有,我想选择值以下类

public partial class Artysta
    {
        public Artysci()
        {
            this.SpektaklArtysta = new HashSet<SpektaklArtysta>();
        }

    [Key]
    public int ArtystaID { get; set; }

    public string Imie { get; set; }

    public string Nazwisko { get; set; }        
}

下面是编辑视图有时显示IMIE和不时Nazwisko的生成代码。

@using (Html.BeginForm())
{
@model Teatr.Models.SpektaklArtysta
<div class="form-group">
            @Html.LabelFor(model => model.ArtystaID, "Artysta", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("ArtystaID", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.ArtystaID, "", new { @class = "text-danger" })
            </div>
        </div>
}

我想设置显示属性Nazwisko,我怎么能做到这一点?

更新:

下面是生成此查看实际模型。

public partial class SpektaklArtysta
    {
        public int SpektaklID { get; set; }

        public int ArtystaID { get; set; }

        public int RolaArtystyID { get; set; }

        [Key]
        public int SpektaklArtystaID { get; set; }

        public virtual Artysci Artysci { get; set; }

        public virtual RolaArtysty RolaArtysty { get; set; }

        public virtual Spektakle Spektakle { get; set; }
    }

Answer 1:

好吧,实际上你需要传递的可能值的列表下拉列表中,比如像这样:

@Html.DropDownListFor(model => model.ArtystaID, new SelectList(Model.Artysci, "ArtystaID", "Nazwisko", 0))

它说:DropDownList的设置模式ArtystaID场,这是由模型Artysci场,这是应该包含有以下主要项目填充ArtystaID领域和显示文本下Nazwisko场(所以,你的Artysta类)。

现在,你的类没有Artysci领域,所以你必须创建它:

public partial class Artysta
    {
        public Artysci()
        {
            this.SpektaklArtysta = new HashSet<SpektaklArtysta>();
        }

    [Key]
    public int ArtystaID { get; set; }

    public string Imie { get; set; }

    public string Nazwisko { get; set; }      

    public List<Artysta> Artysci = ArtistRepository.GetAllArtists();
}

或者你也可以在DropDownList中直接传递:

@Html.DropDownListFor(model => model.ArtystaID, new SelectList(ArtistRepository.GetAllArtists(), "ArtystaID", "Nazwisko", 0))

哦,只是个人记:我知道这可能不是你的选择,除非你是铅/唯一的开发商,但请用英文名字的类,变量等,这将是如果将来别人会更容易必须在你的代码工作,他们可能不会讲波兰语;)



Answer 2:

你的一个很好的选择是使用DropDownList如下

@Html.DropDownList("DropDownId", Model.Select(item => new SelectListItem
{
    Value = item.ArtystaID.ToString(),
    Text = item.Nazwisko.ToString(),
     Selected = "select" == item.ArtystaID.ToString() ? true : false
}))

希望这能回答您的要求!



文章来源: How to choose displayed text on Html.DropDownListFor