Controller.HandleUnknownAction Method

Called when a request matches this controller, but no method with the specified action name is found in the controller.

Namespace:  System.Web.Mvc
Assembly:  System.Web.Mvc (in System.Web.Mvc.dll)

Syntax

'Declaration
Protected Overridable Sub HandleUnknownAction ( _
    actionName As String _
)
protected virtual void HandleUnknownAction(
    string actionName
)
protected:
virtual void HandleUnknownAction(
    String^ actionName
)

Parameters

  • actionName
    Type: System.String
    The name of the attempted action.

Remarks

The result object that is prepared by this method is written to the response by the MVC framework when the object is executed.

Examples

A Visual Studio project with source code is available to accompany this topic: Download.

The following example shows how to render views that do not have a matching ActionResult method. For example, if you have a Details.aspx view but no corresponding method exists that returns an ActionResult instance, the following example displays the Details view when a request to for the Details action is made on the controller. If there is no matching view, the error page displays a message. This example shows one way to use the HandleUnknownAction method. Action methods are not required to return an ActionResult object.

protected override void HandleUnknownAction(string actionName) {
    try {
        this.View(actionName).ExecuteResult(this.ControllerContext);
    }
    catch (InvalidOperationException ieox ) {
        ViewData["error"] = "Unknown Action: \"" + 
            Server.HtmlEncode(actionName) + "\"";
        ViewData["exMessage"] = ieox.Message;
        this.View("Error").ExecuteResult(this.ControllerContext);
    }
}  
Protected Overloads Overrides Sub HandleUnknownAction(ByVal actionName As String) 
    Try 
        Me.View(actionName).ExecuteResult(Me.ControllerContext) 
    Catch ieox As InvalidOperationException 
        ViewData("error") = "Unknown Action: """ & Server.HtmlEncode(actionName) & """" 
        ViewData("exMessage") = ieox.Message 
        Me.View("Error").ExecuteResult(Me.ControllerContext) 
    End Try 
End Sub

See Also

Reference

Controller Class

System.Web.Mvc Namespace