关于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






目录
相关文章
|
存储 设计模式 前端开发
QTChart实现柱状图的mvc模型
QTChart实现柱状图的mvc模型
125 1
|
6月前
|
设计模式 存储 前端开发
MVC(模型-视图-控制器)是一种在Web应用程序开发中广泛使用的软件设计模式
【5月更文挑战第12天】MVC模式是Web应用开发中的常见设计模式,将逻辑、数据和界面分离,提升代码可维护性和重用性。模型处理数据逻辑,视图展示数据,控制器协调用户输入与模型视图交互。优点包括代码分离、易维护、可扩展和组件重用,促进高效灵活的开发。
54 2
|
3月前
|
前端开发 JavaScript
MVC中简单数据模型(M): Model类
MVC中简单数据模型(M): Model类
|
5月前
|
设计模式 前端开发 安全
理解最常用的MVC分层模型及其变种
【6月更文挑战第24天】 本文介绍架构模式如MVC、MVVM和MVP是解决软件结构问题的通用方案。。每种模式有其优缺点,适用场景不同。
310 0
理解最常用的MVC分层模型及其变种
|
5月前
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
|
6月前
|
前端开发 Java PHP
信息系统架构模型(1) MVC
信息系统架构模型(1) MVC
76 0
|
存储 前端开发 Java
Spring MVC 中的数据绑定和验证机制是什么,如何使用
Spring MVC 中的数据绑定和验证机制是什么,如何使用
|
6月前
|
设计模式 前端开发 数据处理
MVC架构中,控制器和模型之间是如何交互的
MVC架构中,控制器和模型之间是如何交互的
69 0
|
6月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
47 0
|
6月前
|
前端开发 JavaScript Java
让你了解什么是spring MVC模型数据(附大量代码)
让你了解什么是spring MVC模型数据(附大量代码)
77 0