Asp.net MVC - 使用PRG模式(附源码)
阅读目录:
一、 传统的Asp.net页面问题
二、Asp.net MVC中也存在同样的问题
三、使用PRG模式
四、PRG模式在MVC上的实现
一. 传统的Asp.net页面问题
一个传统的Asp.net页面的请求会是这样的:
HTTP GET 请求"Register.aspx"
HTTP POST 请求 "Register.aspx"(点击按钮等触发服务器端事件)
数据检验失败, 重新返回到"Register.aspx"
在HTTP POST到"Register.aspx"
数据创建成功, 重新返回到"Register.aspx",提示创建成功
看看好像没有什么问题呀, 但是如果在标记为红色的这步之后,你在浏览器上点击"刷新"按钮, 就会弹出下面的对话框。
aaarticlea/png;base64,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2so91U++WrVyT/Uze2tXqRtWqXWr1LoXDzV13elzOp0DAwN6o33xptLFm0oXvaxZ9LJm0aaLew9/197eodFcHB8flyts/BBkNbmGB+/GUDfgCH/J/EwCADRkSLGKcRun704AMqMIxfb09JhMpjOXrj1z4Gq+un61uh5by67cp336QANm1tVv6J4+0PD47urf/Jv2Sn17V1eX3W7v7u4+/Knuhy+c/cELZ37wmzN/++tv/+ZX3/xy/5cWy62LF793uVxyhY0fvIY6tpch3xjl2Bjylg0A3G+kX7FyD17g/kMRim1razObzf/1xXd//5Yu/436VQfqVx2oX7m//ukDDavUuvw3dE++Vrds6+UHXip59kBFk8FiMplaW1vb29tvdTp+vPncj14896O15374wnc/eOHsD35z5vENRWZzm0ZT5nA45AobAAAAALChCMUaDAaLxVL02Vc/fUv3zBsNqw7U56sbVqkbVr+he/K1uiWbyh54qeTBl0oe33ap4toNnU6n1+ubmpoMxrbn9pc9uO7Cgy+VPPBSyQMvnv/R2nM/fOHs3z7/V6PRotGUdXR0yBU2AAAAAGBDEYpta2tra2v79KuSn/+b/pk36p95Q/fMm9fz9tUv23r5gRfPP/hSyYPrLixar/n3v9RUVlZevXq1pqam8abpeXX54g2li9eXLlqvWbRO8yBm2RfPPbn5Y4PBfP685vbt23KFDQAAAADYUIRie3p6bt26db5C+7O3rv3Pf2n4u3+5/mRBzYPrLjyAyXWdZvH60iUby85cqCwtLS0rK9Nqtb9Ulz+0sWzJxrIlGy8t2XBx8YbSRes12CFr3zpz86bxzJlzPT09coUNAAAAANhQhGJdLpfJZLJYLD89UPLTt3SP7byyaN35Ob+uL1284eKSjZce3VJeUlJy5syZ77777q+fVyzddBn799DL3z/0ctmSjZcWb7i4aH3povWl+/507sYNwxdffCnyPrIAAAAAIAZFKHZqaurGjRu3b99+9Y/fPLqtbPG684vXlSxaj/u1bNnmihWvVmk0mnPnzp09e/bgB5UPv3Ll4Vcqlm2uWLa5fE60G8uWbLi0+OULX52/otffPH36K9F3kEWS3q8pauZv0E1/bRTh8C+Tw8ln7MeIosDjnI6aRFYzX4IcKQEAgKQoQrE+n89oNHZ1df3nN5UPrf/2oQ0XHtqg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" alt="" />
这个对话框的意思是, 为了显示你点击"刷新"按钮的页面, 浏览器需要发送你上次提交的数据到服务器端, 之所以会这样的原因是浏览器记录的是上次你的Post请求, 所以你点击"刷新"按钮, 也是重复执行一次Post请求, 而用户其实是想得到初始的页面,也就是GET请求"Register.aspx"页面. 对于大多数不清楚原理的普通用户来说,这样的对话框会让用户会非常困扰.
web系统应当是以URL为标记的资源, 一个URL最好代表的一种资源. 当你收藏一个网页,分享一个网页给你朋友的时候, 你用的是网页的URL, 那是因为网页的URL就对应了你想分享的资源.
所以上面方式带来的另外一个问题就是, Get, POST, 以及POST成功后的页面实际上代表了3中不同的资源,但是这三种资源的URL是同一个URL.
二. Asp.net MVC中也存在同样的问题
假如我们在完成一个注册页面, Controller中的代码是这样的:
//
// GET: /Home/
[HttpGet]
public ActionResult Register()
{
return View();
}
[HttpPost]
public ActionResult Register(Models.RegisterModel registerModel)
{
return View();
}
View中的代码是:
@using(Html.BeginForm()){
<fieldset>
<legend>Register</legend>
@Html.ValidationSummary(true)
<ol>
<li>
@Html.LabelFor(m => m.NickName)
@Html.TextBoxFor(m => m.NickName)
@Html.ValidationMessageFor(m => m.NickName)
</li>
<li>
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
@Html.ValidationMessageFor(m => m.Email)
</li>
</ol>
<input type="submit" value="Sumbit" />
</fieldset>
}
运行以后,当你提交表单的时候,你会发现出现了同样的问题.
aaarticlea/png;base64,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" alt="" />
三. 使用PRG模式
PRG模式是Post/Redirect/Get的简称.
当一个Post请求过来的时候, 服务端会处理Post请求后,再发送Redirect(HTTP 303状态码)到浏览器,浏览器之后再发送Get请求到其它页面.
这样做, 浏览器的上一个操作就总是Http Get操作, 而不是Post操作, 也就解决了刷新弹出框的问题.
aaarticlea/png;base64,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" alt="" />
四. PRG模式在MVC上的实现
针对上面的例子,我们的修改思路是:
创建3个不同的Action对应, Post请求到"RegisterProcess"之后,无论成功还是失败, 都会转换成Get请求, 成功转向"RegisterSuccess", 失败转向"Register"
aaarticlea/png;base64,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" alt="" />
修改之后的Controller代码如下:
//
// GET: /Home/
[HttpGet, ImportModelStateFromTempData]
public ActionResult Register()
{
return View();
}
[HttpPost, ExportModelStateToTempData]
public ActionResult RegisterProcess(Models.RegisterModel registerModel)
{
if (ModelState.IsValid)
{
return RedirectToAction("RegisterSuccess");
}
return RedirectToAction("Register");
}
[HttpGet]
public ActionResult RegisterSuccess()
{
return View();
}
上面的ImportModelStateFromTempData和ExportModelStateToTempData是ActionFilter, 是为了解决Redirect不能保存Model的验证错误的问题.
实现的基本原理是通过ExportModelStateToTempData把Model的验证错误存放到TempData中, 通过ImportModelStateFromTempData从TempData中把验证错误导入.
View代码是:
@using (Html.BeginForm("RegisterProcess", "Home"))
{
<fieldset>
<legend>Register</legend>
@Html.ValidationSummary(true)
<ol>
<li>
@Html.LabelFor(m => m.NickName)
@Html.TextBoxFor(m => m.NickName)
@Html.ValidationMessageFor(m => m.NickName)
</li>
<li>
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
@Html.ValidationMessageFor(m => m.Email)
</li>
</ol>
<input type="submit" value="Sumbit" />
</fieldset>
}
ImportModelStateFromTempData和ExportModelStateToTempData的实现代码如下:
public abstract class ModelStateTempDataTransfer : ActionFilterAttribute
{
protected static readonly string Key = typeof(ModelStateTempDataTransfer).FullName;
}
public class ExportModelStateToTempData : ModelStateTempDataTransfer
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
//Only export when ModelState is not valid
if (!filterContext.Controller.ViewData.ModelState.IsValid)
{
//Export if we are redirecting
if ((filterContext.Result is RedirectResult) || (filterContext.Result is RedirectToRouteResult))
{
filterContext.Controller.TempData[Key] = filterContext.Controller.ViewData.ModelState;
}
}
base.OnActionExecuted(filterContext);
}
}
public class ImportModelStateFromTempData : ModelStateTempDataTransfer
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var modelState = filterContext.Controller.TempData[Key] as ModelStateDictionary;
if (modelState != null)
{
//Only Import if we are viewing
if (filterContext.Result is ViewResult)
{
filterContext.Controller.ViewData.ModelState.Merge(modelState);
}
else
{
//Otherwise remove it.
filterContext.Controller.TempData.Remove(Key);
}
}
base.OnActionExecuted(filterContext);
}
}
最后,附上本文相关源代码 MVCFormValiation.zip
Asp.net MVC - 使用PRG模式(附源码)
Asp.net MVC - 使用PRG模式(附源码)的更多相关文章
- 17+个ASP.NET MVC扩展点【附源码】
1.自定义一个HttpModule,并将其中的方法添加到HttpApplication相应的事件中!即:创建一个实现了IHttpmodule接口的类,并将配置WebConfig. 在自定义的Http ...
- 16个ASP.NET MVC扩展点【附源码】
转载于:http://www.cnblogs.com/wupeiqi/p/3570445.html 1.自定义一个HttpModule,并将其中的方法添加到HttpApplication相应的事件中! ...
- ASP.NET CORE 入门教程(附源码)
ASP.NET CORE 入门教程 第一课 基本概念 基本概念 Asp.Net Core Mvc是.NET Core平台下的一种Web应用开发框架 符合Web应用特点 .NET Core跨平台解决方案 ...
- Asp.Net MVC 高级特性(附带源码剖析)
1. 程序入口(MvcHandler,RouteHandler,HttpModule) 2.异步类包(静态类AsyncResultWrapper),开启整个MVC异步循环 3.Aggregate递归链 ...
- 由12306动态验证码想到的ASP.NET实现动态GIF验证码(附源码)
背景: 12306网站推出“彩色动态验证码机制”,新版验证码不但经常出现字符叠压,还不停抖动,不少人大呼“看不清”,称“那个验证码,是毕加索的抽象画么!”铁总客服则表示:为了能正常购票只能这样.而多家 ...
- Entity Framework在Asp.net MVC中的实现One Context Per Request(附源码)
上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现 ...
- 使用MiniProfiler给Asp.net MVC和Entity Framework号脉(附源码)
在学习python开发框架pylons/pyramid的过程中,里面有个非常棒的页面性能监控功能,这样在开发过程中,你能清楚的知道当前页面的性能以及其它参数. 这里介绍一下如何给Asp.net MVC ...
- C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)
C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...
- C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)
C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...
随机推荐
- 【转】C++对成员访问运算符->的重载
运算符->的重载比较特别,它只能是非静态的成员函数形式,而且没有参数. 1.如果返回值是一个原始指针,那么就将运算符的右操作数当作这个原始指针所指向类型的成员进行访问: 2.如果返回值是另一个类 ...
- bootstrapValidator使用总结
1.根据条件动态增删检查条件 参考文章:https://blog.csdn.net/sxlzs_/article/details/78211928 #去除某字段的验证 $("#formRes ...
- 异步io模块
'''客户端''' import socket,select #####进行封装,将socket对象和要返回的url,和回调函数进行一下封装 class Httprequest(): def __in ...
- Codeforces 438E The Child and Binary Tree [DP,生成函数,NTT]
洛谷 Codeforces 思路 看到计数和\(998244353\),可以感觉到这是一个DP+生成函数+NTT的题. 设\(s_i\)表示\(i\)是否在集合中,\(A\)为\(s\)的生成函数,即 ...
- 基于ARM Cortex-M和Eclipse的SWO单总线输出
最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关通过SWD的跟踪接口SWO获取ARM Cortex-M相关信息的文章,文章结构明晰,讲解透彻,本人深受启发,特意将其翻 ...
- 处理:“ORA-28002: the password will expire within 7 days”的问题
一:问题描述: 二:处理步骤 [oracle@localhost 2018_07_14]$ rlwrap sqlplus / as sysdba; SQL*Plus: Release 11.2.0.3 ...
- Confluence 6 设置 Oracle 数据库准备
请查看 Supported Platforms 页面来获得 Confluence 系统支持的 Oracle 数据库版本.你需要在安装 Confluence 之前升级你的 Oracle 数据库. 如果你 ...
- yolov3 安装训练
https://blog.csdn.net/helloworld1213800/article/details/79749359 https://blog.csdn.net/lilai619/arti ...
- Android 自动化测试框架
Android常用的自动化测试工具框架: Monkey,MonkeyRunner,UIAutomator,Robotium,Appium,Monkey Talk...... 但这些工具框架都是什么呢有 ...
- OSError: cannot identify image file
OSError: cannot identify image file <_io.BytesIO object at 0x00000236DD598BF8> 说一下为什么会出现OSErro ...