我正在ASP上工作。Net MVC路由。我想创建一个将参数传递到操作的路由,而不考虑参数名称。我读了一些关于这方面的书,尝试了不同的选择,但无法让它工作,所以想知道这是否可行吗?
下面是我的问题和一个例子:
在我的StudentController中,我有两种动作方法
// First Action in StudentController
public ActionResult GetStudentByName(string name)
// Second Action in StudentController
public ActionResult GetStudentById(int id)
现在,在我的路线配置中,我有:
// Get Student By Name
routes.MapRoute(
name: "StudentByName",
url: "Student/GetStudentByName/{name}",
defaults: new { controller = "Student", action = "GetStudentByName", name = "" }
);
// Get Student By Id
routes.MapRoute(
name: "StudentById",
url: "Student/GetStudentById/{id}",
defaults: new { controller = "Student", action = "GetStudentById", id = UrlParameter.Optional }
);
这很好,但我必须为这两个动作定义两条路线。我的操作需要具有不同名称(名称和id)的参数。
我想要一个通用路由,它处理动作方法并将参数传递给动作,类似这样的?
// Is this possible?
routes.MapRoute(
name: "AspDefault",
url: "{controller}/{action}/{GenericParamName}",
defaults: new { controller = "Home", action = "Index", GenericParamName = UrlParameter.Optional }
);
我试过这个,但没能成功。如果操作中的参数名称与路由不匹配,则它们似乎无法通过。。。
是否可以用一条路径处理这两种操作方法?如果是,怎么做?