当前位置:  开发笔记 > 编程语言 > 正文

怎么样?控制器返回任何/当前视图

如何解决《怎么样?控制器返回任何/当前视图》经验,为你挑选了1个好方法。

简介:
如何让控制器返回当前视图或只是什么都不做?

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();

最终避免它的最好方法是设计局部视图,以便首先避免问题(就像你自己提到的那样).



1> John Foster..:

如果你想让它什么都不做,你可以返回一个EmptyResult ......

return new EmptyResult();

如果您正在使用AjaxHelper,则可以通过提供不成功的状态代码(例如404或其他任何最合适的代码)来避免更新,这将阻止它替换您的div,因为MicrosoftMvcAjax.js中的javascript显式检查成功响应之前更新任何元素: -

this.ControllerContext.HttpContext.Response.StatusCode = 404;
return new EmptyResult();

最终避免它的最好方法是设计局部视图,以便首先避免问题(就像你自己提到的那样).


好吧,它会做一些事情,它会返回一个空的结果.与返回null相同.这只是显示空内容.这不是我想要的.我希望它......嗯......什么都不做,拯救,保持现状.没有更新.:)
推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有