简介:
如何让控制器返回当前视图或只是什么都不做?
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");
}
Run Code Online (Sandbox Code Playgroud)
Joh*_*ter 29
如果你想让它什么都不做,你可以返回一个EmptyResult ......
return new EmptyResult();
Run Code Online (Sandbox Code Playgroud)
如果您正在使用AjaxHelper,则可以通过提供不成功的状态代码(例如404或其他任何最合适的代码)来避免更新,这将阻止它替换您的div,因为MicrosoftMvcAjax.js中的javascript显式检查成功响应之前更新任何元素: -
this.ControllerContext.HttpContext.Response.StatusCode = 404;
return new EmptyResult();
Run Code Online (Sandbox Code Playgroud)
最终避免它的最好方法是设计局部视图,以便首先避免问题(就像你自己提到的那样).
| 归档时间: |
|
| 查看次数: |
30593 次 |
| 最近记录: |