MVC 5 Routing Attribute

后端 未结 4 1276
梦如初夏
梦如初夏 2020-12-19 00:37

I have the Home Controller and my Action name is Index. In My route config the routes like below.

routes.MapRoute(
    \"Default\",   // Route name
    \"{c         


        
相关标签:
4条回答
  • 2020-12-19 00:58

    try changing the index action to this:

    public ActionResult Index(int? id = null) 
    {
      return View(); 
    }
    

    This should do the trick. So you can pass the id as a param with the "/{value}" or just use "/?id={value}"

    0 讨论(0)
  • 2020-12-19 01:02

    For Attribute Routing in ASP.NET MVC 5

    decorate your controller like this

    [RoutePrefix("Home")]
    public HomeController : Controller {
        //GET Home/Index
        [HttpGet]
        [Route("Index")]
        public ActionResult Index() {
            return View(); 
        }
    }
    

    And enable it in route table like this

    public class RouteConfig {
    
        public static void RegisterRoutes(RouteCollection routes) {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
            //enable attribute routing
            routes.MapMvcAttributeRoutes();
    
            //convention-based routes
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = "" }
            );
        }
    }
    
    0 讨论(0)
  • 2020-12-19 01:07

    Please check here for information on routing: http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/asp-net-mvc-routing-overview-cs

    Most likely, default routing should be something like below:

    routes.MapRoute(
                    "Default",                                              // Route name
                    "{controller}/{action}/{id}",                           // URL with parameters
                    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
                );
    

    Also, looks like the Index Action Method is missing a parameter, see below:

    public ActionResult Index(string id)
            {
                return View();
            }
    

    Try placing string id in your Index method.

    0 讨论(0)
  • 2020-12-19 01:11
    public class URLRedirectAttribute : ActionFilterAttribute
        {
            public override void OnActionExecuted(ActionExecutedContext filterContext)
            {
                    string destinationUrl = "/VoicemailSettings/VoicemailSettings";
                    filterContext.Result = new JavaScriptResult()
                    {
                        Script = "window.location = '" + destinationUrl + "';"
                    };
            }
        }
    
    0 讨论(0)
提交回复
热议问题