【发布时间】:2009-02-23 21:13:35
【问题描述】:
简短:
如何让控制器返回当前视图或什么都不做?
长:
我有一个部分视图,我在其中创建了一个图像滑块。
它包含一个链接,该链接向控制器发送请求以获取下一个图像(使用 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");
}
【问题讨论】:
-
就像我正在寻找的一样,但还没有答案。下面是令人耳目一新的页面,我什至不喜欢。由于我的 javascript/jquery 更新了用户界面,并且服务器端没有更新 UI 上的任何内容,只需要一个标志来查看我的控制器是否成功执行某些任务。如果是,我使用 javascript/jquery 更新 UI,如果不是,则仅使用它再次更新某些内容(如复选标记)。我喜欢保留所有其他页面内容,因为它没有刷新效果,会杀死用户操作的 javascript 更改。下面的答案。不工作,因为它返回空白视图。
标签: asp.net-mvc