65.9K
CodeProject 正在变化。 阅读更多。
Home

在 ASP.NET MVC 中处理未知 Action

starIconstarIconstarIconstarIconstarIcon

5.00/5 (5投票s)

2009 年 8 月 16 日

CPOL

1分钟阅读

viewsIcon

38523

在本文中,我将探讨如何处理未知 Action。当控制器无法找到与浏览器请求匹配的 Action 方法时,会调用 Controller.HandleUnknownAction 方法。

引言

当控制器无法找到与浏览器请求匹配的 Action 方法时,会调用 Controller.HandleUnknownAction 方法。

背景

在本文中,我将探讨如何处理未知 Action。当控制器无法找到与浏览器请求匹配的 Action 方法时,会调用 Controller.HandleUnknownAction 方法。我在之前的文章中实现了以下方法:使用 ASP.NET MVC 实现 HTTP 文件上传

以下是 C# 中的语法

protected virtual void HandleUnknownAction(string actionName) 

以下是一个 FileUploadController 类,它实现了 HandleUnknownAction,如下所示

[HandleError]
public class FileUploadController : Controller 
{ 
    public ActionResult FileUpload() 
    {
        return View(); 
    } 
    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult FileUpload(HttpPostedFileBase uploadFile) 
    { 
        if (uploadFile.ContentLength > 0) 
        { 
            string filePath = 
               Path.Combine(HttpContext.Server.MapPath("../Uploads"), 
                            Path.GetFileName(uploadFile.FileName)); 
            uploadFile.SaveAs(filePath); 
        } 
        return View(); 
    } 
    protected override void HandleUnknownAction(string actionName) 
    { 
        actionName = "FileUpload";
        this.View(actionName).ExecuteResult(this.ControllerContext); 
    } 
}

上面的示例在控制器上对 FileUpload action 提出请求时,会显示 FileUpload 视图。如果不存在匹配的视图,则会调用 FileUpload 控制器的 HandleUnknownAction() 方法。我已硬编码 FileUpload 视图,以便如果浏览器请求不匹配 FileUpload,它将显式调用 FileUpload action。以下是带有未知 action 的视图

请注意,控制器没有 UploadToGoogle action,但我们的 HandleUnknownAction() 方法被调用,并且它显式调用了 FileUpload action。

摘要

当控制器无法找到与浏览器请求匹配的 Action 方法时,会调用 Controller.HandleUnknownAction 方法。因此,在您的控制器类中,您不需要为每个视图显式编写 action 方法。

© . All rights reserved.