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

这是什么原因了,是因为我在表示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();
}
这样不让其有返回值,不触动验证,那么就不会提前出现验证提示消息。

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


关于MVC中模型model的验证问题的更多相关文章
- ASP.NET MVC中对Model进行分步验证的解决方法
原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个 ...
- ASP.NET Core MVC 中的 Model 模型
ASP.NET Core MVC 中的 Model 我们希望最终从 Student 数据库表中查询特定的学生详细信息并显示在网页上,如下所示. MVC 中的模型包含一组表示数据的类和管理该数据的逻辑. ...
- ASP.NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例
在实际的ASP.NET mvc项目开发中,有时会遇到一个参数是一个List.Dictionary等集合类型的情况,默认的情况ASP.NET MVC框架是怎么为我们绑定ASP.NET MVC的Actio ...
- asp.net MVC中的@model与Model
asp.net MVC中的@model与Model https://blog.csdn.net/ydm19891101/article/details/44301201 在MVC的实际使用中,我们经常 ...
- 在ASP.NET MVC中对手机号码的验证
在ASP.NET MVC中,可以使用RegularExpression特性来验证手机号码. public class Customer { [Required(ErrorMessage = " ...
- MVC 中的Model对象
最近实在是太忙,客户丢了一个框架,没有任何说明文档,更没有所谓的技术支持,一直忙于学习,最后好歹还有点头绪,话不多说,MVC的学习是不能拉下的,就当前小白的我,认为MVC中的M并不是想象中的那样简单, ...
- C#-MVC基础-模型(Model)、视图(View)和控制器(Controller)
搜狗百科:http://baike.sogou.com/v25227.htm?fromTitle=MVC MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件 ...
- mvc中常见的属性验证
客户端验证逻辑会对用户向表单输入的数据给出一个即时反馈.而之所以需要服务器端验证,是因为来自网络的信息都是不能被信任的. 当在ASP.NET MVC设计模式上下文中谈论验证时,主要关注的是验证模型的值 ...
- PHP MVC 中的MODEL层
Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封 三.实现你的Mode层 Model层,就是MVC模式中的数据处理层,用来进行数据和商业逻辑的装封,进行他的设计的时候设计到三个 ...
随机推荐
- [.NET领域驱动设计实战系列]专题十一:.NET 领域驱动设计实战系列总结
一.引用 其实在去年本人已经看过很多关于领域驱动设计的书籍了,包括Microsoft .NET企业级应用框架设计.领域驱动设计C# 2008实现.领域驱动设计:软件核心复杂性应对之道.实现领域驱动设计 ...
- 推荐一些常用感觉不错的jQuery插件
转:http://www.cnblogs.com/v10258/p/3263939.html JQuery插件繁多,下面是个人在工作和学习中用到感觉不错的,特此记录. UI: jquery UI(官方 ...
- 【读书笔记】-- JavaScript数组
数组是一段线性分配的内存,它通过整数计算偏移并访问其中的元素.大多数的语言都会要求一个数组的元素是相同类型,但JavaScript数组可以包含任意类型. var misc = ['string', n ...
- Hibernate SQL实际sql语句监控- p6spy+hibernate+proxool 设置
由于ORM工具的缘故,我们调试程序的时候远没有直接在程序里直接写个string的SQL简单,想当年查个sql是有多么的幸福,一行sql = "select * from ..."找 ...
- NSString NSNumber 相互转化
NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init]; NSNumber *firstNum = [NSNumber n ...
- PDO连接mysql和pgsql数据库
PDO连接mysql数据库 <?php $dsn="mysql:host=localhsot;dbname=lamp87"; $user="root"; ...
- Linux之VSFTP服务
一 .文件服务器简介 ftp:在内网和公网使用. 服务器:windows,linux 客户端:windows,linux samba:只能在内网使用(文件共享服务) 服务器:windows,linux ...
- 大数据时代的IT架构设计
大数据时代的IT架构设计(来自互联网.银行等领域的一线架构师先进经验分享) IT架构设计研究组 编著 ISBN 978-7-121-22605-2 2014年4月出版 定价:49.00元 208页 ...
- C#学习系列-抽象方法与虚拟方法的区别
参考:http://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=9851&m=9838&ct=31054 如 ...
- 设置easyui input默认值
/*设置input 焦点*/ $(function () { //集体调用 $(".formTextBoxes input").each(function () { $(this) ...