我是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对象。
请告诉我们这里有什么问题,如何解决这个问题。