所选内容不会发布所选项目

时间:2019-07-15 09:15:08

标签: c# asp.net-mvc asp.net-core razor drop-down-menu

HttpPost 上,我没有获得所选的下拉值。 存在要发布的模型中的所有其他值。 CountryList被发布为空。

selectedCountryID与Get中初始化的相同。 无论我在下拉菜单中选择什么,int值都保持不变。 我不需要列表-仅需要选择的值。

项目正在使用 Core Net 2.2 / MVC

型号

    public class GuestRequestModel 
    {
        [Display(Name = "Select Country", Description = "Select Country")]
        public int SelectedCountryID { get; set; }
        public IEnumerable<SelectListItem> CountryList { get; set; }
    }

控制器

    [HttpGet]
    public IActionResult Create()
    {
       var listDTO = guestRequestRepository.GetCountryList();
       var listForVM = listDTO.Select(t => new SelectListItem
       {
            Text = t.Description_EN,
            Value = t.ID.ToString()
        });
        model.CountryList = listForVM;
        model.SelectedCountryID = country.ID;
        return View(model);
    }
    [HttpPost]
    public IActionResult Create(GuestRequestModel model)
    {
        if (ModelState.IsValid)
        {// no selected value here}
    }

查看

    @model GuestStudentWF.Models.GuestRequestModel
    <form asp-action="Create">         
        <div class="form-group">
                <label asp-for="SelectedCountryID" class="control-label"></label>
                <select asp-for="SelectedCountryID" asp-items="Model.CountryList">
                    <option>Please select one</option>
                </select>
            </div>
    </form>

我尝试将SelectedCountryID更改为字符串-没什么区别。 可能是我在 MVC-Razor 概念中缺少了一些有趣的东西

1 个答案:

答案 0 :(得分:1)

这是您的问题。您两次声明SelectedCountryID。您的视图的第17行

<div><input type="hidden" data-val="true" data-val-required="The Select Country field is required." id="SelectedCountryID" name="SelectedCountryID" value="30" /></div>