Ric*_*čík 5 c# asp.net asp.net-mvc routes
我正在尝试使用optional/id参数创建一个控制器操作,如下所示:
http://localhost/taskshttp://localhost/tasks/42这是控制器和动作:我试图做的是在动作上使用route属性
public class TasksController : AsyncController
{
[Route("tasks/{id}")]
public ActionResult Index(string id)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
这有效,但只有在url中设置了id参数,但默认页面/tasks会抛出一个未找到的错误,或者在[Route("tasks")]没有id的情况下使用时,默认页面可以正常工作,但是当设置了id时,会再次抛出一个未找到的错误.我还尝试[Route("tasks/{id ?}")]将id标记为可选参数,但它不起作用.
任何想法如何使这项工作?
您可以通过向路由参数添加问号来使URI参数可选.如果route参数是可选的,则必须为method参数定义默认值.
在操作方法上设置默认值,并在路径参数末尾添加问号.
[Route("tasks/{id?}")]
public ActionResult Index(string id =null)
Run Code Online (Sandbox Code Playgroud)