0we*_*101 6 asp.net parameters asp.net-mvc routing
嗨如果两个参数都是可选的,我如何映射网址../Companies/Results/value/id?
公司是控制器,结果是动作,值和id是可选参数.在我的表单上是一个值的文本框和一个id的选择列表.用户可以选择两个或每个中的一个来搜索.尝试过这样的事情,但是当其中一个可选参数(例如值)丢失时无法处理,例如../Companies/Results//id
routes.MapRoute(
"Company+Profession", // Route name
"{action}/{value}/{profId}", // URL with parameters
new { controller = "Companies", action = "Index", value = UrlParameter.Optional, profId = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)
您不能拥有包含两个可选参数的路由,由于您描述的问题,只有最后一个参数可以精确选择.我建议你有一个默认参数value,比如byid,当这个人选择一个职业时使用它.
我假设你是通过javascript构建URL,因为使用GET表单操作会导致参数名称被添加到URL.在这种情况下,当文本框为空时,只需插入默认的byid.
更新您的路由以包含默认值,以便您生成的任何网址都可以使用.有关处理生成具有两个"可选"参数的URL的替代方法,请参阅Phil Haack 关于此的博客文章.
// used when both parameters are specified
routes.MapRoute(
"Company+Profession", // Route name
"{action}/{value}/{profId}", // URL with parameters
new { controller = "Companies", action = "Index", value ="byid", profId = UrlParameter.Optional } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)
我不确定,因为我现在不知道在哪里尝试这个,但这是我的建议
routes.MapRoute(
"Company+Profession", // Route name
"Companies/{action}/value-{value}/id-{profId}", // URL with parameters
new { controller = "Companies", action = "Index", value = UrlParameter.Optional, profId = UrlParameter.Optional } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21757 次 |
| 最近记录: |