在 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 概念中缺少了一些有趣的东西
答案 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>