|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛B轰轰的linux,估计也没有系统捆绑c/c++的编译器,而且许多新平台都无法支持复杂的c/c++编译器在上面直接运行。<p>我们这里将要谈到的是ASP.NETMVCPRG数据考证,次要是参考一些外洋关于PRG数据考证的文章,但愿对人人有所匡助。
我的理念:
既然是ASP.NETMVC,那就一定要用PRG。可是复杂的PRG不克不及在输出页面显现Html.ValidationMessage,另外一个就是之前的数据会被全体清空大概初始化了。
想一想要我是打了半天的字一下全没了那多惨啊。你的访客不气傻了才怪。
OK,Google一下,找到了http://weblogs.asp.net/rashid/archive/2009/04/01/asp-net-mvc-best-practices-part-1.aspx
阿,他叫甚么名字我不熟悉,我也看不懂英文的版权声明,以是这只要个链接没签名了。谁熟悉他叫他写个C#版大概VB.NET版的版权声明吧,感谢。
英文欠好没关系,间接看第13点:UsePRGPatternforDataModification
<OLclass=dp-c>Controller[AcceptVerbs(HttpVerbs.Get),OutputCache(CacheProfile="Dashboard"),StoryListFilter,ImportModelStateFromTempData]publicActionResultDashboard(stringuserName,StoryListTabtab,OrderByorderBy,int?page){//OtherCodesreturnView();}[AcceptVerbs(HttpVerbs.Post),ExportModelStateToTempData]publicActionResultSubmit(stringuserName,stringurl){if(ValidateSubmit(url)){try{_storyService.Submit(userName,url);}catch(Exceptione){ModelState.AddModelError(ModelStateException,e);}}returnRedirect(Url.Dashboard());}
自界说了两个ActionFilter,阿,作者仿佛打错别字了。您别在乎。
<divclass="code"><OLclass=dp-xml>ModelStateTempDataTransferpublicabstractclassModelStateTempDataTransfer:ActionFilterAttribute{protectedstaticreadonlystringKey=typeof(ModelStateTempDataTransfer).FullName;}publicclassExportModelStateToTempData:ModelStateTempDataTransfer{publicoverridevoidOnActionExecuted(ActionExecutedContextfilterContext){//OnlyexportwhenModelStateisnotvalidif(!filterContext.Controller.ViewData.ModelState.IsValid){//Exportifweareredirectingif((filterContext.ResultisRedirectResult)||(filterContext.ResultisRedirectToRouteResult)){filterContext.Controller.TempData[Key]=filterContext.Controller.ViewData.ModelState;}}base.OnActionExecuted(filterContext);}}publicclassImportModelStateFromTempData:ModelStateTempDataTransfer{publicoverridevoidOnActionExecuted(ActionExecutedContextfilterContext){ModelStateDictionarymodelState=filterContext.Controller.TempData[Key]asModelStateDictionary;if(modelState!=null){//OnlyImportifweareviewingif(filterContext.ResultisViewResult){ |
|