关于MVC中模型model的验证问题

时间:2022-11-01 20:22:36

今天在做项目练习的时候发现,MVC中使用自带的模型验证时会提前显示在界面上,比如下面所示:

关于MVC中模型model的验证问题

这是什么原因了,是因为我在表示get请求的action里面返回了其界面所显示使用的model,我们知道mvc的请求路径是分为3步的。

1:浏览器发送请求,经过底层路由的解析到达控制器,从而到达Action中。

2:在Action中我们进行常规的处理,(调用业务逻辑,操作数据库等),返回到指定的页面HTML中。

3:浏览器渲染页面,显示一些我们需要知道的内容出来。

这是简单的一些流程,那么我们为什么会出现那个错误提示,那个本应该是在表单提交之后,要是有错误或者不符合要求才需要显示的,这个错误就是我们配置和action中返回值的问题。

之前出现上图的问题我的M和C中代码是这样的。

M:

    public class CreateResponseTextMessageView
{
[Display(Name="响应文本内容"),Required(ErrorMessage ="内容不能为空")]
public string Context { get; set; }
public DateTime CreateTime { get; set; }
}

C:

        [HttpGet]
public ActionResult Create(CreateResponseTextMessageView model)
{
return View(model);
}

V:

                                    <div class="form-group">
@Html.LabelFor(x => x.Context, new { @class = "col-sm-2 control-label" })
<div class="col-sm-5">
@Html.TextAreaFor(x => x.Context, new { @class = "form-control", placeholder = "文本内容" })
</div>
<div class="col-sm-4">
<div class="help-block">@Html.ValidationMessageFor(x => x.Context)</div>
</div>
</div>

这里可以看到我们在action中返回了model,其实这是多余的,我们在post的时候准备的验证,现在就提前起作用了,只有让action不返回任何东西,这样我们的验证才不会启动,这样就没有了刚打开页面就出现了错误信息,这是非常不友好的用户体验。

        [HttpGet]
public ActionResult Create()
{
return View();
}

这样不让其有返回值,不触动验证,那么就不会提前出现验证提示消息。

关于MVC中模型model的验证问题

我们这个验证的用处是在表单提交(POST)之后,在处理页面进行验证的时候才使用,当我们没有通过验证时,就会返回空的model到前台页面,这样就会触动验证提示。

关于MVC中模型model的验证问题

关于MVC中模型model的验证问题

关于MVC中模型model的验证问题的更多相关文章

  1. ASP&period;NET MVC中对Model进行分步验证的解决方法

    原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个 ...

  2. ASP&period;NET Core MVC 中的 Model 模型

    ASP.NET Core MVC 中的 Model 我们希望最终从 Student 数据库表中查询特定的学生详细信息并显示在网页上,如下所示. MVC 中的模型包含一组表示数据的类和管理该数据的逻辑. ...

  3. ASP&period;NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例

    在实际的ASP.NET mvc项目开发中,有时会遇到一个参数是一个List.Dictionary等集合类型的情况,默认的情况ASP.NET MVC框架是怎么为我们绑定ASP.NET MVC的Actio ...

  4. asp&period;net MVC中的&commat;model与Model

    asp.net MVC中的@model与Model https://blog.csdn.net/ydm19891101/article/details/44301201 在MVC的实际使用中,我们经常 ...

  5. 在ASP&period;NET MVC中对手机号码的验证

    在ASP.NET MVC中,可以使用RegularExpression特性来验证手机号码. public class Customer { [Required(ErrorMessage = &quot ...

  6. MVC 中的Model对象

    最近实在是太忙,客户丢了一个框架,没有任何说明文档,更没有所谓的技术支持,一直忙于学习,最后好歹还有点头绪,话不多说,MVC的学习是不能拉下的,就当前小白的我,认为MVC中的M并不是想象中的那样简单, ...

  7. C&num;-MVC基础-模型&lpar;Model&rpar;、视图&lpar;View&rpar;和控制器&lpar;Controller&rpar;

    搜狗百科:http://baike.sogou.com/v25227.htm?fromTitle=MVC MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件 ...

  8. mvc中常见的属性验证

    客户端验证逻辑会对用户向表单输入的数据给出一个即时反馈.而之所以需要服务器端验证,是因为来自网络的信息都是不能被信任的. 当在ASP.NET MVC设计模式上下文中谈论验证时,主要关注的是验证模型的值 ...

  9. PHP MVC 中的MODEL层

    Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封 三.实现你的Mode层 Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封,进行他的设计的时候设计到三个 ...

随机推荐

  1. Jquery、简单的下拉列表、网页左部导航菜单

    简单的下拉菜单.左部导航使用. 2016-5-13 记 效果图如下: <!DOCTYPE html> <html lang="en"> <head&g ...

  2. 。。。欢乐捕鱼App WeX5 连接打包代理服务失败,请检查代理服务地址是否正确。。。

    今天学习了WeX5,第一次使用,使用它打包一个Web App 欢乐捕鱼的时候,在最终打包生成Native App的时候突然报错了,说:"连接打包代理服务失败,请检查代理服务地址是否正确&qu ...

  3. linux shell 参数传递

    在shell编程时.可以使用参数.Shell有位置参数和内部参数 1. 位置参数 由系统提供的参数称为位置参数.位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linu ...

  4. &lbrack;转&rsqb;Mac OS X 下部分Android手机无法连接adb问题之解决方案

    时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说了,总之做的 ...

  5. MySQL之count&lpar;&ast;&rpar;与count&lpar;id&rpar;效率比较&lpar;转&rpar;

    优化总结: 1.任何情况下SELECT COUNT(*) FROM tablename是最优选择: 2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ’ ...

  6. linux用户与组的管理(命令加入、手动加入、加入组、用户之间的切换)

    一.用户登录的时候须要验证的是这两个文件 检測username   Login:  root                        到该文件夹下检查 /etc/passwd 检測用passwo ...

  7. Types of AOP

    There are two distinct types of AOP: static and dynamic. The difference between them is really the p ...

  8. C&num;全局鼠标键盘Hook

    原文出自:http://www.cnblogs.com/iEgrhn/archive/2008/02/17/1071392.html using System; using System.Collec ...

  9. &lbrack;C&num;&rsqb;批量修改文件后缀名

    代码: /// <summary> /// 修改文件后缀 /// </summary> /// <param name="extension"> ...

  10. Kano模型告诉你&OpenCurlyDoubleQuote;是不是只要企业努力的提高产品或服务质量,顾客满意度就一定会提高吗?”

    在 PO在敏捷需求下要遵守哪6条重要原则?   中讲到探索和交付两大阶段的6个原则 其中在原则[做有价值的需求]中讲了两个方法:BSA分析和产品Backlog 其中BSA分析是我在产品规划阶段常使用的 ...