首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DropDownListFor创建List<myType>

从DropDownListFor创建List<myType>
EN

Stack Overflow用户
提问于 2017-11-12 16:44:20
回答 1查看 30关注 0票数 0

我有以下课程:

代码语言:javascript
复制
public class Nationality
{
    public int ID { get; set; }
    public string name { get; set; }
}

public class PersonalData
{
    public List<Nationality> availableNationalities { get; set; }

    public PersonalData()
    {
        availableNationalities = new List<Nationality>();
    }
}

在我看来,我希望使用DropDownlistFor上的availableNationalities字段创建一个PersonalData

下面是一段视图代码和一个示例,我试图这样做:

代码语言:javascript
复制
@model PersonalData
@Html.DropDownListFor(
                    model => model.personalData.nationality,
                    new SelectList(Model.availableNationalities, "ID", "name"),
                    "Choose please an option",
                    new { required = "required" }
                )

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-12 16:51:46

当您的personalData视图模型上没有PersonalData属性时,您的代码将抛出一个异常。

在视图模型中再添加一个属性来存储所选的选项值

代码语言:javascript
复制
public class PersonalData
{
    public int SelectedNationality { set;get;}
    public List<Nationality> AvailableNationalities { get; set; }

    public PersonalData()
    {
        AvailableNationalities = new List<Nationality>();
    }
}

现在,在您的视图中,您可以使用选择标记助手(在您的ASP.NET核心应用程序)

代码语言:javascript
复制
@model PersonalData
<form asp-controller="Home" asp-action="Create">

    <select asp-for="SelectedNationality" 
            asp-items="@(new SelectList(Model.AvailableNationalities ,"Id","Name"))">
        <option>Please select one</option>
    </select>
    <input type="submit"/>
</form>

如果它是一个非核心应用程序,您可以使用DropDownListFor助手

代码语言:javascript
复制
@Html.DropDownListFor(
                       a=> a.SelectedNationality,
                       new SelectList(Model.AvailableNationalities, "ID", "name"),
                       "Choose please an option",
                       new { required = "required" }
                    )

假设GET操作方法在将GET操作方法发送到视图之前在PersonalData视图模型对象上设置它的PersonalData属性。

代码语言:javascript
复制
public IActionResult Create()
{
   var vm=new PersonalData 
   {
     AvailableNationalities = new List<Nationality>
     {
         new Nationality { Id=1, Name="USA"},
         new Nationality { Id=2, Name="Canada"},
     }
   }; 
   return View(vm); 
}

如果您只关心在视图中呈现一个SELECT元素,您可以使用List<SelectListItem>而不是List<Nationality>,就像this post中所解释的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47251301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档