gpt4 book ai didi

asp.net-mvc - 怎么样? Controller 什么也不返回/当前 View

转载 作者:行者123 更新时间:2023-12-03 09:27:10 24 4
gpt4 key购买 nike

短:
如何使 Controller 返回当前 View 或只是不执行任何操作?

长:
我有一个局部 View ,在这里我创建了一个imageslider。
它包含一个链接,该链接向 Controller 发送请求以获取下一个图像(使用ajax)。
Controller 获取下一张图像,将其存储在ViewData中,然后发回部分 View (上面的一个)。

现在,我今天要做的是,当 Controller 到达最后一个图像时,它会返回相同的图像(通过重新获取),但仍会创建一个新 View ,即客户端/浏览器会重新解析“相同”图像数据。

这似乎不是最佳的。
我想做的是,当 Controller 到达最后一张图像时,它应该什么也不做。
如果返回null,则 View 将更新为空内容。
我希望 View /客户端/浏览器保留其所拥有的内容,并使 Controller 仅执行任何操作。

    [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");
}

最佳答案

如果您不希望其执行任何操作,则可以返回EmptyResult。

return new EmptyResult();

如果您使用的是AjaxHelper,则可以通过提供不成功的状态代码(例如404或最合适的代码)来避免更新,这将阻止它替换div,因为MicrosoftMvcAjax.js中的javascript会在此之前显式检查是否成功响应更新任何元素:
this.ControllerContext.HttpContext.Response.StatusCode = 404;
return new EmptyResult();

最终,避免这种情况的最佳方法是设计局部 View ,这样就可以首先避免问题(就像您提到自己一样)。

关于asp.net-mvc - 怎么样? Controller 什么也不返回/当前 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/579390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com