首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValidationMessagerFor和AddmodelError不工作

ValidationMessagerFor和AddmodelError不工作
EN

Stack Overflow用户
提问于 2014-03-23 16:52:29
回答 1查看 351关注 0票数 1

对于我的生活,我不明白为什么这个简单的代码不起作用。我知道这里有很多这样的问题,我已经试过了所有的问题,但我就是不能让它起作用!

我的控制器:

代码语言:javascript
复制
 //validate email
            if (studentlist.StudentLiveId == null || !studentlist.StudentLiveId.Contains("@"))
            {
                ModelState.AddModelError("StudentLiveId", "Please enter a valid email id");
                return View(studentlist);
            }

我的观点-相关的bit:

代码语言:javascript
复制
@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,而不是显示错误和停止,它只是跳过liveid验证字段,转到模型中的其他下拉字段,并抛出一个对象引用,而不是设置为对象错误的实例!

我只是在另一个常见的地方打印验证错误,而不是在相关字段旁边。我希望视图会抛出错误并停止进一步加载,而不是转到下拉列表并显示一些随机错误。这里怎么了?

EN

回答 1

Stack Overflow用户

发布于 2014-03-28 05:31:03

不管是否存在ModelState错误,模型都会被处理并绑定到视图,因此不幸的是,您的期望是不正确的。

如果获得空引用错误,通常意味着要将某种类型的集合重新绑定到DropDownList或其他没有防范空集合的助手。

您必须记住,当您发布表单时,没有绑定到某种类型的输入的任何内容都不会被保留。有时,这似乎有违直觉,但绑定到下拉列表的值是“选中”值,而不是用于填充<select>元素的项的集合。因此,如果您的初始操作包括构建IEnumerableListSelectList (等等)的逻辑。对于模型,在返回视图之前,必须在post操作中重复该逻辑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22593899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档