首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML.DropDownListFor DropDownList

HTML.DropDownListFor DropDownList
EN

Stack Overflow用户
提问于 2016-08-30 20:00:17
回答 1查看 5K关注 0票数 2

我试图从我的数据库检索数据到一个HTML,而不是检索到Html.DropDownListFor,但我无法检索标记。

NewCustomerViewModel

代码语言:javascript
复制
    public class NewCustomerViewModel
{
    public int CustId { get; set; }

    [Required]
    public string CustFirstName { get; set; }

    [Required]
    public string CustLastName { get; set; }

    [Required]
    public int StId { get; set; }
    public IEnumerable<State> States { get; set; }
}

CustomerController

代码语言:javascript
复制
public class CustomerController : Controller
{
    private CustomerDbContext _context;

    public CustomerController(CustomerDbContext context)
    {
        _context = context;
    }

    // GET: /<controller>/
    public IActionResult Index()
    {
        return View(_context.Customers.ToList());
    }

    public IActionResult Create()
    {
        var stateNames = _context.States.ToList();
        var viewModel = new NewCustomerViewModel
        {
            States = stateNames
        };

        return View(viewModel);
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult Create(Customer customer)
    {
        if (ModelState.IsValid)
        {
            _context.Customers.Add(customer);
            _context.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(customer);
    }
}

创建视图

下面的HTML DropDownListFor运行得很好:

代码语言:javascript
复制
@Html.DropDownListFor(m => m.StId, new SelectList(Model.States, "StId", "StName"))

不过,我无法让select标记工作。

代码语言:javascript
复制
<select asp-for="StId" asp-items="@Model.States" class="form-control">
            <option>Select State</option>
        </select>

我所有的HTML在我的Create视图中使用,而不是HTML助手,这正是我想要避免的。我只希望能够将数据检索到标记中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-30 20:09:32

对于select标记助手,asp-items需要SelectListItem集合\SelectList,其中的每个项都具有ValueText属性。Value属性值将用于该选项的值,Text属性值将用于UI中该选项的显示文本。

States集合中的项没有值和文本属性,但具有StIdStName属性。因此,我们需要将此类型转换为SelectListItem类型。

所以你的代码应该是

代码语言:javascript
复制
<select asp-for="StId"  asp-items="@(new SelectList(Model.States,"StId","StName"))">
     <option>Please select one</option>
</select>

附加参考

Select Tag Helper in MVC 6

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

https://stackoverflow.com/questions/39236130

复制
相关文章

相似问题

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