路由前缀不适用于索引

时间:2017-12-23 05:28:15

标签: c# asp.net-mvc asp.net-mvc-routing

我有控制器:DoomPlaceController

In route: I have used: doom-place/{parameter} // no action

和控制器:

[Route("doom-place/{parameter}")]
public ActionResult Index(string parameter)
{
    return View(); 
}

我想要什么:当我点击网址时:www.xyz.com/doom-place 它应该打开Doom-Place/index页。

但是现在,我可以使用doom-place/index访问该页面,但是当我点击www.xyz.com/doom-place时,它会自动打开索引页。

帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以将参数设为可选

[RoutePrefix("doom-place")]
public class DoomPlaceController : Controller {
    //Matches GET /doom-place
    //Matches GET /doom-place/some_parameter
    [HttpGet]
    [Route("{parameter?}")]
    public ActionResult Index(string parameter) { 
        return View(); 
    }
}

鉴于正在使用属性路由,假设已在RouteConfig.RegisterRoutes中启用了属性路由

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);

    //enable attribute routing     
    routes.MapMvcAttributeRoutes();

    //covention-based routes
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

参考Attribute Routing in ASP.NET MVC 5