首页 > 解决方案 > 如何从只有 asp.net core mvc 中的文本项的选择列表中获取选定的项目?

问题描述

如何从只有 asp.net core mvc 中的文本项的选择列表中获取选定的项目值或帖子上的文本?

该模型有一个字符串属性 ChosenText。

目前,ChosenText 在 post 操作方法中总是返回为 null。

标记:

<form asp-action="MakeChange" method="post" id="mainform">
  <select name="cars" id="cars" asp-for="ChosenText">
        <option value="volvo">Volvo</option>
        <option value="saab">Saab</option>
        <option value="mercedes">Mercedes</option>
        <option value="audi">Audi</option>
    </select>
   <button type="submit">Submit</button>
</form>

动作方法:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult MakeChange(TestModel model)
    {
        if (model.ChosenText.ToUpper() == "VOLVO")
        {

        }

        return View(model);
    }

标签: c#razorasp.net-core-mvcmodel-bindingselectlist

解决方案


您必须将模型和 @Html.AntiForgeryToken() 添加到您的视图中,并从 select 中删除 id 和 names 属性,因为您使用的是 asp-for 和表单提交

@model TestModel 

<form asp-action="MakeChange" method="post" >
@Html.AntiForgeryToken()

<select asp-for="ChosenText">
  .....
  
</form>

恕我直言,因为您使用的是模型,所以创建模型也是一个好主意

    [HttpGet]
     public IActionResult Get()
    {
      var model= new TestModel();
        return View("viewName", model);
    }

推荐阅读