对于我的生活,我无法弄清楚为什么这段简单的代码不起作用。我知道这里有很多这样的问题,我已经尝试了所有这些问题,但我无法让它发挥作用!
我的控制器:
//validate email
if (studentlist.StudentLiveId == null || !studentlist.StudentLiveId.Contains("@"))
{
ModelState.AddModelError("StudentLiveId", "Please enter a valid email id");
return View(studentlist);
}
我的观点 - 相关位:
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<p style="font-weight: bold; font-size: large; color: red">
hELLO
</p>
<div class="editor-field">
@Html.ValidationMessageFor(model => model.StudentLiveId)
</div>
错误:
如果我将liveid字段保留为null,而不是显示错误和 停止,它只是跳过Live Id验证字段并转到 模型中的其他一些下拉字段并抛出一个Object引用 未设置为对象错误的实例!
我只是在另一个常见位置打印验证错误,而不是在相关字段旁边。我希望视图抛出错误并停止进一步加载,而不是去下拉列表并显示一些随机错误。这有什么不对?
答案 0 :(得分:0)
无论是否存在任何ModelState
错误,模型都会被处理并绑定到视图,因此您的期望很遗憾。
如果您收到空引用错误,通常意味着您尝试将某种类型的集合重新绑定到DropDownList
或其他没有帮助的其他帮助程序防止空集合。
你必须记住,当你发布表格时,任何不受某种或那种输入约束的东西都不会被保留。这似乎有点违反直觉,但是下拉列表中绑定的值是&#34;选择&#34; value,而不是用于填充<select>
元素的项集合。因此,如果您的初始操作包含为您的模型构建IEnumerable
,List
或SelectList
(等)的逻辑,则必须在返回之前在帖子操作中重复该逻辑观点。