当前位置: 首页 > 编程语言 > C#

ASP.NETMVC-HybridViewResult(ViewResult-PartialViewResult)share

时间:2023-04-10 21:46:02 C#

ASP.NETMVC-HybridViewResult(ViewResult/PartialViewResult)是否可以构建一个返回AjaxRequest或HttpRequest的PartialViewResult或ViewResult的混合ViewResult?IsAjaxRequest->返回PartialViewResult!IsAjaxRequest->ReturnViewResult据我所知,我的HybridViewResult应该来自ViewResultBase。但是如何实现FindView方法呢?尝试:publicclassHybridViewResult:ActionResult{publicstringViewName{get;放;}publicHybridViewResult(){}publicHybridViewResult(stringviewName){this.ViewName=viewName;}publicoverridevoidExecuteResult(ControllerContextcontext){if(context==null)thrownewArgumentNullException("context");varusePartial=ShouldUsePartial();ActionResultres=GetInnerViewResult(usePartial);res.ExecuteResult(上下文);}privateActionResultGetInnerViewResult(boolusePartial){varview=ViewName;;如果(String.IsNullOrEmpty(视图)){res=usePartial?newPartialViewResult(视图):newViewResult(视图);}else{res=usePartial?新的PartialViewResult():新的ViewResult();}返回资源;}privateboolShouldUsePartial(ControllerContextcontext){returnfalse;//你的代码检查你是否需要在这里使用partial}}根据需要添加任何构造函数和GetInnerViewResult变量,即传递模型。这是对eglasius答案的稍微简单的考虑。我实际上正在解决类似的问题,只是我需要返回一个JsonResult。(未经测试的)NormalOrAjaxResult只允许您为非ajax请求指定一个操作结果,为ajax请求指定一个操作结果。因为这些是ActionResults,所以您可以混合使用Redirect、View、Partial和Json视图结果。公共类NormalOrAjaxResult:ActionResult{privatereadonlyActionResult_nonAjaxActionResult;私有只读ActionResult_ajaxActionResult;publicNormalOrAjaxResult(ActionResultnonAjaxActionResult,ActionResultajaxActionResult){_nonAjaxActionResult=nonAjaxActionResult;_ajaxActionResult=ajaxActionResult;}publicoverridevoidExecuteResult(ControllerContextcontext){varisAjaxRequest=context.HttpContext.Request["isAjax"];如果(isAjaxRequest!=null&&isAjaxRequest.ToLower()=="true"){_ajaxActionResult.ExecuteResult(context);}else{_nonAjaxActionResult.ExecuteResult(上下文);在这种情况下,你不能做两个不同的动作吗?您可以简单地将[nonAction]shared]逻辑放入[nonAction]方法中吗?我知道我来晚了,但这些对我来说似乎不合适,所以这是我的2美分:publicclassPartialViewConverter:ViewResult{publicViewResultBaseRes{get;放;}publicPartialViewConverter(ViewResultBaseres){Res=res;}publicoverridevoidExecuteResult(ControllerContextcontext){Res.ExecuteResult(上下文);}publicstaticViewResultConvert(ViewResultBaseres){returnnewPartialViewConverter(res);}}用法:返回PartialViewConverter.Convert(PartialView());protectedoverrideViewResultView(stringviewName,stringmasterName,objectmodel){//你喜欢什么条件可以到这里if(Request.QueryString["partial"]!=null)returnPartialViewConverter.Convert(PartialView(viewName,model));否则返回基地。视图(视图名称、主名称、模型);}任何你返回视图的操作方法都会在请求时自动返回partials:以上是C#学习教程:ASP.NETMVC-HybridViewResult(ViewResult/PartialViewResult)分享的全部内容。很有用,需要多了解C#学习教程,希望大家多多关注——//如果在查询字符串中传递了partial=true,这将返回一个部分。返回视图();}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除如需转载请注明出处: