ASP MVC5方法没有命中

时间:2017-04-29 13:15:40

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

我的EventsController中有一个方法,其定义如下:

public JsonResult Index(string id)
{
    ...
}

当我尝试使用http://localhost:57715/events/some_string从浏览器访问它时,我无法访问它。但是当我浏览到http://localhost:57715/events时,我的调试点被命中,id为null。这是为什么?我的路线定义如下(我没有改变它):

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

2 个答案:

答案 0 :(得分:0)

我设法解决了,这很简单。我应该使用http://localhost:57715/events/some_string

,而不是使用http://localhost:57715/events/Index/some_string

答案 1 :(得分:0)

当您请求http://localhost:57715/events/some_string时,MVC框架不知道some_string是操作方法名称或 id 参数值。所以你应该明确指定参数名称。

这应该有效

http://localhost:57715/events?id=some_string

OR 您可以使用包含控制器名称和操作方法名称的url以及您的id参数值

http://localhost:57715/events/yourActionMethodName/some_string

如果您不希望网址yourSite/events/some_string有效,您可以考虑启用属性路由,并在您的操作方法中指定上述路由模式,如下所示

public class EventsController : Controller
{
    [Route("Events/{id}")]
    public ActionResult Index(string id)
    {
        return Content("id : "+id);
    }
}

现在请求yourSite/events/some_string将由您的EventsController的索引操作方法处理。