我有一个奇怪的问题:一个模型有一个SelectList
,但在POST
操作中,ModelState.IsValid
是假的,因为SelectList
:
public class CarMakesViewModel
{
public Guid Id { get; set; }
public Microsoft.AspNetCore.Mvc.Rendering.SelectList Nationalities { get; set; }
public Guid NationalityId { get; set; }
}
字符串
在“编辑”视图中:
<div class="form-group">
<label asp-for="NationalityId" class="form-label required"></label>
<select asp-for="NationalityId" name="NationalityId" asp-items="Model.Nationalities" class="form-control "></select>
<span asp-validation-for="NationalityId" class="text-danger form-control-sm"></span>
</div>
型
控制器:
[HttpPost]
public async Task<IActionResult> Edit(CarMakesViewModel model)
{
if (ModelState.IsValid)
{
//Edit Code
return RedirectToAction("Index");
}
await GetSelectList(model);
return View(model);
}
型
在post
中,Nationality
SelectList
为空,这是常见的,但为什么Model.State.IsValid
总是等于false
?
错误说:
国籍为必填项
需要注意的是,选择选项通常使用文本和值呈现。
3条答案
按热度按时间wf82jlnq1#
您是否尝试应用
[ValidateNever]
属性来删除服务器端Nationalities
的验证?当应用于属性时,验证系统排除该属性。
字符串
lyr7nygr2#
你可能用的是net6。你可以把list设为空
字符串
qacovj5a3#
另一个选择是在视图模式中初始化你的选择列表。你可以在构造函数中完成,或者使用属性初始化器:
字符串