在 ASP.NET MVC 中处理未知 Action





5.00/5 (5投票s)
在本文中,我将探讨如何处理未知 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 方法。