首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ASP.NET MVC3:如何在使用AJAX发布帖子时重定向到视图?

ASP.NET MVC3:如何在使用AJAX发布帖子时重定向到视图?
EN

Stack Overflow用户
提问于 2011-04-11 17:21:40
回答 2查看 3.1K关注 0票数 3

我有一个搜索视图,它使用AJAX向服务器发送请求。根据存储库返回的响应对象,应该在搜索视图(发出请求的视图)上显示一个对话框(使用Json对象填充数据),或者将用户重定向到结果视图(填充作为视图模型传递的响应中的数据)。

现在,我已经被告知(和经验),当一个帖子是使用AJAX制作的时候,不能重定向。那么,如果响应是从存储库获得的,是否有某种方法可以重定向到另一个视图并传递视图模型,如果应该显示对话结果,则只需要回发Json对象。

我的控制器操作由搜索视图发布,目前看起来像这样:

代码语言:javascript
代码运行次数:0
运行
复制
    [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();
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2011-05-24 06:39:40

这个问题有点老了,但我想我会提供我的意见。我遇到过类似的情况,我必须发布一篇文章,然后用更新内容填充页面上的一些html,或者将用户重定向到一个新的位置。可能有更好的方法来完成这一点,然而,这就是我所做的。如果您使用jQuery执行post,那么查看响应的内容类型就足够聪明了;要返回一个视图,只需像现在这样做,并在success函数中填充内容。如果您希望重定向用户

代码语言:javascript
代码运行次数:0
运行
复制
        string javascript = "window.location.href='{0}';";
        return JavaScript(string.Format(javascript, returnUrl));

mvc框架会将javascript mime类型附加到响应中,jQuery将提取该类型并执行javascript,然后重定向用户。唯一需要注意的是,在您的成功方法中,javascript将被填充到html内容中。为了克服这个问题,可以询问html的内容类型,类似于here

票数 2
EN

Stack Overflow用户

发布于 2011-04-11 17:34:07

我建议你把它分成两个电话。在第一个AJAX调用中,检查它是ViewResponse还是DialogResponse。如果ViewResponse进行另一个AJAX调用以获取实际的结果对象,则进行非AJAX服务器调用以重定向到新视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5619206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档