简介:
如何让控制器返回当前视图或只是什么都不做?
LONG:
我有一个局部视图,我已经创建了一个图像滑动器.它包含一个链接,它向控制器发送请求以获取下一个图像(使用ajax).控制器获取下一个图像,将其存储在ViewData中并发回部分视图(上面的视图).
现在,我今天所做的是,当控制器到达最后一个图像时,它会重新返回相同的图像(通过重新获取),但仍会创建一个新视图,即客户端/浏览器重新解析"相同"数据.
这似乎有些不理想.
我想要做的是,当控制器到达最后一个图像时,它应该什么都不做.
如果我返回null,则视图将使用空内容进行更新.
我希望视图/客户端/浏览器保留它拥有的任何内容和控制器,只是什么都不做.
[AcceptVerbs(HttpVerbs.Post)] public ActionResult GetNextImage(...) { if(Request.IsAjaxRequest()) { if(CURRENT_IMAGE != LAST_IMAGE) { Image image = GetNextImage(...); var partialViewResult = new PartialViewResult(); partialViewResult.ViewName = "ImageSlide"; partialViewResult.ViewData.Model = image; return partialViewResult; } else { // DO NOTHING, HOW? } } return RedirectToAction("Error", "Home"); }
John Foster.. 29
如果你想让它什么都不做,你可以返回一个EmptyResult ......
return new EmptyResult();
如果您正在使用AjaxHelper,则可以通过提供不成功的状态代码(例如404或其他任何最合适的代码)来避免更新,这将阻止它替换您的div,因为MicrosoftMvcAjax.js中的javascript显式检查成功响应之前更新任何元素: -
this.ControllerContext.HttpContext.Response.StatusCode = 404; return new EmptyResult();
最终避免它的最好方法是设计局部视图,以便首先避免问题(就像你自己提到的那样).
如果你想让它什么都不做,你可以返回一个EmptyResult ......
return new EmptyResult();
如果您正在使用AjaxHelper,则可以通过提供不成功的状态代码(例如404或其他任何最合适的代码)来避免更新,这将阻止它替换您的div,因为MicrosoftMvcAjax.js中的javascript显式检查成功响应之前更新任何元素: -
this.ControllerContext.HttpContext.Response.StatusCode = 404; return new EmptyResult();
最终避免它的最好方法是设计局部视图,以便首先避免问题(就像你自己提到的那样).