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

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

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


679140-20160727232426919-467100006.png


这是什么原因了,是因为我在表示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();
}

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


679140-20160727232430809-2046217216.png

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

679140-20160727232434559-1307384739.png

679140-20160727232439247-542340316.gif






目录
相关文章
|
6月前
|
存储 设计模式 前端开发
QTChart实现柱状图的mvc模型
QTChart实现柱状图的mvc模型
87 1
|
6月前
|
存储 前端开发 Java
Spring MVC 中的数据绑定和验证机制是什么,如何使用
Spring MVC 中的数据绑定和验证机制是什么,如何使用
|
3月前
|
前端开发 JavaScript Java
让你了解什么是spring MVC模型数据(附大量代码)
让你了解什么是spring MVC模型数据(附大量代码)
39 0
|
6月前
|
前端开发
MVC模型
MVC模型
30 0
|
8月前
|
开发框架 前端开发 安全
ASP.NET Core MVC 从入门到精通之Html辅助标签补充及模型校验基础
ASP.NET Core MVC 从入门到精通之Html辅助标签补充及模型校验基础
87 0
|
9月前
|
前端开发 Java Spring
《Spring MVC》 第八章 拦截器实现权限验证、异常处理
《Spring MVC》 第八章 拦截器实现权限验证、异常处理
137 0
|
10月前
|
设计模式 前端开发 安全
Spring MVC-01循序渐进之Model 2和MVC
Spring MVC-01循序渐进之Model 2和MVC
42 0
|
10月前
|
前端开发 网络协议 Java
02.【基础】sdk和runtime区别及让你一睹为快使用CLI在CentOS上快速搭建Console,WebApi,MVC三大应用模型
02.【基础】sdk和runtime区别及让你一睹为快使用CLI在CentOS上快速搭建Console,WebApi,MVC三大应用模型
148 0
|
设计模式 存储 前端开发
Python:设计模式之模型-视图-控制器-MVC复合模式
Python:设计模式之模型-视图-控制器-MVC复合模式
67 0
|
前端开发 JavaScript 数据处理
mvc深刻理解,logic,service,model层的作用
mvc深刻理解,logic,service,model层的作用
264 0