关于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领域驱动设计实战系列]专题四:前期准备之工作单元模式(Unit Of Work)
一.前言 在前一专题中介绍了规约模式的实现,然后在仓储实现中,经常会涉及工作单元模式的实现.然而,在我的网上书店案例中也将引入工作单元模式,所以本专题将详细介绍下该模式,为后面案例的实现做一个铺垫. ...
- pydev+eclipse+python3.4运行hello word,提示Error in sitecustomize; set PYTHONVERBOSE for traceback:
刚开始学习python,按照网上步骤搭建好pydev+eclipse的开发环境,运行print("hello world")提示下面错误: Error in sitecustomi ...
- IOS 多线程02-pthread 、 NSThread 、GCD 、NSOperationQueue、NSRunLoop
注:本人是翻译过来,并且加上本人的一点见解. 要点: 1.前言 2.pthread 3.NSThread 4.Grand Central Dispatch(GCD) 5.Operation Queue ...
- PowerDesigner实用操作
1. 让PhysicalDiagram里的表显示字段名Tools→Display Preferences→在General Settings里选择Table→点击Advanced→选择Form下的Co ...
- Java的默认编码
摘要: 1.Java的默认编码内容: 1.Java的默认编码 java的src.zip包中的java.nio.charset.Charset类中defaultCharset()方法说明java的编码类 ...
- 《机器学习实战》 code debug
摘要:最近在看<机器学习实战>,在code的过程中总是会报一些小错误,所以发下debug过的地方:由于是跳着看的,所以只是其中一部分,希望之后能把这本书我遇见的全部错误都在此更正下. 内容 ...
- Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结
Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结 1.1. 树形结构-- 一对多的关系1 1.2. 树的相关术语: 1 1.3. 常见的树形结构 ...
- Atitit java 二维码识别 图片识别
Atitit java 二维码识别 图片识别 1.1. 解码11.2. 首先,我们先说一下二维码一共有40个尺寸.官方叫版本Version.11.3. 二维码的样例:21.4. 定位图案21.5. 数 ...
- 下列哪项不属于jdk1.6垃圾收集器?
下列哪项不属于jdk1.6垃圾收集器? A. Serail 收集器 B. parNew 收集器 C. CMS 收集器 D. G1 收集器 答案:D 解:Java垃圾收集器发展路径下图所示: 其 ...
- 封装WebAPI客户端,附赠Nuget打包上传VS拓展工具
一.前言 上篇< WebAPI使用多个xml文件生成帮助文档 >有提到为什么会出现基于多个xml文件生成帮助文档的解决方案,因为定义的模型可能的用处有: 1:单元测试 2:其他项目引用(可 ...