今天在做项目练习的时候发现,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模式中的数据处理层,用来进行数据和商业逻辑的装封,进行他的设计的时候设计到三个 ...
随机推荐
-
Jquery、简单的下拉列表、网页左部导航菜单
简单的下拉菜单.左部导航使用. 2016-5-13 记 效果图如下: <!DOCTYPE html> <html lang="en"> <head&g ...
-
。。。欢乐捕鱼App WeX5 连接打包代理服务失败,请检查代理服务地址是否正确。。。
今天学习了WeX5,第一次使用,使用它打包一个Web App 欢乐捕鱼的时候,在最终打包生成Native App的时候突然报错了,说:"连接打包代理服务失败,请检查代理服务地址是否正确&qu ...
-
linux shell 参数传递
在shell编程时.可以使用参数.Shell有位置参数和内部参数 1. 位置参数 由系统提供的参数称为位置参数.位置参数的值可以用$N得到,N是一个数字,如果为1,即$1.类似C语言中的数组,Linu ...
-
[转]Mac OS X 下部分Android手机无法连接adb问题之解决方案
时至当今,Android山寨手机厂商已如此之多,能修改和个性化定制Android OS的能人已是多如牛毛,有的牛人修改Android系统只会影响所修改的点,不会影响其它,然后还有的就不多说了,总之做的 ...
-
MySQL之count(*)与count(id)效率比较(转)
优化总结: 1.任何情况下SELECT COUNT(*) FROM tablename是最优选择: 2.尽量减少SELECT COUNT(*) FROM tablename WHERE COL = ’ ...
-
linux用户与组的管理(命令加入、手动加入、加入组、用户之间的切换)
一.用户登录的时候须要验证的是这两个文件 检測username Login: root 到该文件夹下检查 /etc/passwd 检測用passwo ...
-
Types of AOP
There are two distinct types of AOP: static and dynamic. The difference between them is really the p ...
-
C#全局鼠标键盘Hook
原文出自:http://www.cnblogs.com/iEgrhn/archive/2008/02/17/1071392.html using System; using System.Collec ...
-
[C#]批量修改文件后缀名
代码: /// <summary> /// 修改文件后缀 /// </summary> /// <param name="extension"> ...
-
Kano模型告诉你“是不是只要企业努力的提高产品或服务质量,顾客满意度就一定会提高吗?”
在 PO在敏捷需求下要遵守哪6条重要原则? 中讲到探索和交付两大阶段的6个原则 其中在原则[做有价值的需求]中讲了两个方法:BSA分析和产品Backlog 其中BSA分析是我在产品规划阶段常使用的 ...