- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个搜索 View ,它使用 AJAX 向服务器发送请求。根据存储库返回的响应对象,应在搜索 View (发送请求的 View )上显示一个对话框(使用 Json 对象填充数据),或者应将用户重定向到结果 View (填充来自响应的数据作为 View 模型传递)。
现在我被告知(并且亲身经历过)当使用 AJAX 发布帖子时无法重定向。那么,如果该响应是从存储库获得的,是否有某种方法可以重定向到另一个 View 并传递 View 模型,如果应该显示对话结果,则只回发 Json 对象。
由搜索 View 发布到的我的 Controller 操作目前看起来像这样:
[HttpPost]
public ActionResult SomeAction(SearchRequest reqData)
{
ResponseBase response = worker.PerformSearch(reqData);
if (response is ViewResponse)
{
//Redirect to "AnotherView" and pass response as the view model.
return View("AnotherView", response as ViewResponse);
}
else if (response is DialogResponse)
{
//Return the Json object.
return Json(new { type = "dialogresponse", data = response });
}
else
{
//To do: Put error handling code here.
throw new NotImplementedException();
}
}
最佳答案
这个问题有点老了,但我想我会提供我的意见。我遇到过类似的情况,我必须发帖并用更新内容填充页面上的一些 html,或者将用户重定向到新位置。可能有更好的方法来实现这一点,但这就是我所做的。如果您使用 jQuery 来执行发布,它会很聪明地查看响应的内容类型;返回一个 View 就像你现在做的那样,并在成功函数中填充内容。如果你想重定向用户
string javascript = "window.location.href='{0}';";
return JavaScript(string.Format(javascript, returnUrl));
mvc 框架会将 javascript mime 类型附加到响应中,jQuery 会选择它并执行 javascript,然后重定向用户。唯一的问题是 javascript 将填充到成功方法中的 html 内容中。为了克服这个问题,询问 html 的内容类型,类似于 here
关于ajax - ASP.NET MVC3 : How to redirect to a view when a post was made using AJAX?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5619206/
我是一名优秀的程序员,十分优秀!