没有视图运行MVC控制器操作?

Dou*_*nes 16 asp.net-mvc asp.net-mvc-2

我有一个ExcelResult操作结果,根据Stephen Walther提示返回Microsoft Excel文档.基本上它只是将一个流写入响应.在调试VS 2010(ASP.NET Dev Server)时,它运行正常,但是当我在IIS 6框上运行它时,我收到以下错误:

未找到"GenerateExcel"视图或其主页.搜索了以下位置:〜/ Views/Home/GenerateExcel.aspx~/Views/Home/GenerateExcel.ascx~/Views/Shared/GenerateExcel.aspx~/Views/Shared/GenerateExcel.ascx

没有关联的View,因此没有文件,但不应该有.我究竟做错了什么?

UPDATE

通过简单地返回void而不是ActionResult,我不再有这个问题.我没有返回ExcelResult,而是明确地调用它的ExecuteResult方法,该方法正在写入输出流.

之前

public ActionResult GenerateExcel()
{
    return this.Excel(parameters);
}
Run Code Online (Sandbox Code Playgroud)

    public void GenerateExcel()
{
ExcelResult excelResult = this.Excel(parameters);
excelResult.ExecuteResult(null);
}
Run Code Online (Sandbox Code Playgroud)

在那之后,我的NTLM身份验证存在安全问题,但是他们"离开了"(意思是我希望他们回来).但就目前而言,一切正常.

Ufu*_*arı 17

确保您的action方法不返回ActionResult:

public void DoSomething()
Run Code Online (Sandbox Code Playgroud)

  • 哦,不是每个动作都应该返回一个ActionResult.在这种情况下,他想要一个"ExcelResult",这是一个自定义动作结果,但仍然是一个动作结果. (3认同)

Sha*_*rad 5

在我们有数百或数千个视图的情况下,这非常有用.在这种情况下,我们会创建数百或数千个控制器操作吗?当然不是,那我们怎么解决呢?

在MVC框架中,控制器类包括一个方法HandleUnknownAction(),该方法在我们尝试在不存在的控制器上调用操作(或者我们请求没有匹配操作方法的视图时)执行.

在此输入图像描述

我相信,这回答了你的问题.