C# 如何在Html.DropDownListFor上选择显示的文本

C# 如何在Html.DropDownListFor上选择显示的文本,c#,asp.net-mvc,asp.net-mvc-5,html.dropdownlistfor,C#,Asp.net Mvc,Asp.net Mvc 5,Html.dropdownlistfor,如何选择某个类型的Html.DropDownListFor中显示的属性 例如,我有下面的类,我想从中选择值 public partial class Artysta { public Artysci() { this.SpektaklArtysta = new HashSet<SpektaklArtysta>(); } [Key] public int ArtystaID { get;

如何选择某个类型的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; }        
}

一个好的选择是使用
DropDownList
,如下所示

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

希望能满足您的要求

一个好的选择是使用
DropDownList
,如下所示

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

希望能满足您的要求

好的,您需要向下拉列表传递可能值的列表,例如:

@Html.DropDownListFor(model => model.ArtystaID, new SelectList(Model.Artysci, "ArtystaID", "Nazwisko", 0))
它显示:DropDownList设置models ArtystaID字段,该字段由models 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();
}

哦,还有一个个人提示:我知道这可能不是你的选择,除非你是一名首席/唯一的开发人员,但请为你的类、变量等使用英文名称,如果将来有其他人必须编写你的代码,而且他们可能不会说波兰语,这会容易得多;)

好的,您需要向下拉列表传递可能值的列表,例如:

@Html.DropDownListFor(model => model.ArtystaID, new SelectList(Model.Artysci, "ArtystaID", "Nazwisko", 0))
它显示:DropDownList设置models ArtystaID字段,该字段由models 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();
}


哦,还有一个个人提示:我知道这可能不是你的选择,除非你是一名首席/唯一的开发人员,但请为你的类、变量等使用英文名称,如果将来有其他人必须编写你的代码,而且他们可能不会说波兰语,这会容易得多;)

显示
Imie
是什么意思?您发布的任何代码都不会显示与属性
Imie
(或用于
Nazwisko
)相关的任何内容。不清楚您试图做什么(在任何情况下,您的
@Html.DropDownList()
也不起作用)。显示
Imie
是什么意思-您发布的任何代码都不会显示任何与属性
Imie
(或
Nazwisko
)相关的内容。不清楚您试图做什么(在任何情况下,您的
@Html.DropDownList()
也不起作用)。我不知道,但如果模型有多个项,我猜它是相关的。如果它有多个项,您的代码无论如何都不会起作用。为什么你建议为
DropDownList
发布代码,然后为
DropDownList
发布代码?您还没有将dropdownlist绑定到模型属性,因此它不会被绑定!我已经更新了我的答案,它不是
DropDownListFor
,而是
DropDownList
Model
IEnumerable
,它包含用于创建
IEnumerable
的项目,这是
下拉列表的数据源查看OP的视图代码-模型是
@Model Teatr.Models.SpektaklArtysta
,而不是
IEnumerable
!(但别担心——OP的代码毫无意义)我不知道是谁投了你的反对票,但在这种情况下,你的答案部分是正确的。我还是投了票。我不知道,但是如果模型有多个项目,我猜它是相关的。如果它有多个项目,你的代码无论如何都不会工作。为什么你建议为
DropDownList
发布代码,然后为
DropDownList
发布代码?您还没有将dropdownlist绑定到模型属性,因此它不会被绑定!我已经更新了我的答案,它不是
DropDownListFor
,而是
DropDownList
Model
IEnumerable
,它包含用于创建
IEnumerable
的项目,这是
下拉列表的数据源查看OP的视图代码-模型是
@Model Teatr.Models.SpektaklArtysta
,而不是
IEnumerable
!(但别担心——OP的代码毫无意义)我不知道是谁投了你的反对票,但在这种情况下,你的答案部分是正确的。我还是投了票。我已经用模型类更新了问题帖子,这个视图是为模型类生成的。当前代码工作正常(显示所有可能的值),但有时显示的文本是Imie,有时是Nazwisko。我马上检查一下你们建议的方法。关于波兰人的名字,我正在上一门大学课程,在那里,医生需要波兰人的名字,磨我的齿轮;]我所有的代码都是英文的,但这次我别无选择。简单流畅!工作起来很有魅力。遗憾的是,我不能改变自动生成的代码中显示的值,但哪些值会进入下拉列表?在
new SelectList()
中,您可以对数据源执行Linq查询:
Model.Artysci.Where(artysta=>artysta.Nazwisko.EndsWith(“ski”)
或任何您想要的筛选,或者执行一些修改,例如:
Model.Artysci.Select(artysta=>new artysta{artysta=artysta.ArtystaID,Imie=artysta.Imie,nazzwisko=“Pan”+artysta.Nazwisko})
我已经用生成此视图的模型类更新了问题帖子。当前代码运行良好(显示所有可能的值)但有时显示的文本是Imie,有时是Nazwisko。我会检查一下你们建议的方法。关于波兰名字,我正在上大学课程,医生要求波兰名字,磨磨我的齿轮;]我所有的代码库都是英文的,但这次我别无选择。简单而流畅!很有魅力。很遗憾我无法更改为自动生成的代码显示的值,但也可以更改。在下拉列表中显示哪些值?在
new SelectList()
中,您可以对数据源执行Linq查询:
Model