JavaScriptResult在Response Stream本身上编写内容

时间:2016-08-30 22:08:32

标签: javascript c# asp.net-mvc

我是MVC的绝对新手但是曾参与过ASP.NET。我正在对一个模块进行单元测试和功能测试,发现了一些奇怪的行为(它是一个旧的代码库)。

我相信有一个非控制器类继承自ActionFilterAttribute,并且有一个方法可以为每个操作方法执行调用。这调用了一个使用Response.Redirect()的控制器操作方法,如

HttpContext.Current.Response.Redirect("/FAQ/GetContent/?querystringkey=value");

实际控制器/操作方法代码

    public JavaScriptResult GetContent(string querystringkey)
    {
        string url = "/FAQPage.html?key=" + querystringkey;

        return JavaScript("window.location.href = '" + url + "'");
    }

这样可以正常工作并重定向到FAQPage.html页面但是如果在执行任何操作方法时发生异常,而不是重定向到FAQPage.html页面,它会将JavaScript内容window.location.href = '/FAQPage.html?key=value'写入响应流本身。

因此,此JavaScript行会出现一个空白屏幕。我无法弄清楚为什么会这样? MSDN doc说,JavaScriptResult创建了一个写入响应流的JavaScript对象。

请告诉我们这里有什么问题,如何解决这个问题。

0 个答案:

没有答案