如何解决Asp.net MVC路由查询
| 我的表格如下:-<% using ( Html.BeginForm(\"search\",\"home\",FormMethod.Get) ) { %>
<%= Html.TextBox(\"location\",\"\") %>
<input type=\"submit\" value=\"Search All Jobs\" />
<% } %>
在global.asax中,我有这条路线
routes.MapRoute(
\"Search\",// Route name
\"{controller}/{action}/{location}\",// URL with parameters
new { controller = \"Home\",action = \"Index\",location = UrlParameter.Optional } );
现在,每当我单击提交按钮时,我都会得到类似的网址
http:// localhost / home / search?location =卡拉奇
但是我想要
http:// localhost / home / search / karachi
任何想法?
解决方法
您得到的url是正常的,这是浏览器根据规范发送GET参数的方式,您对此无能为力。
使用HTTP“获取”方法的形式
数据集附加到URI
由action属性指定
(带有问号(\“?\”))为
分隔符),然后将此新URI发送到
加工代理。
最好的选择是javascript,以拦截表单的提交,取消默认操作并重写url。就我个人而言,我不会理会这个问题,而让浏览器按照规范中的定义发送用户输入。
但是,如果您真的坚持要实现这一点,这是javascript的示例:
$(\'form\').submit(function() {
var location = encodeURIComponent($(\'#location\').val());
var url = \'<%= Url.Action(\"search\",\"home\",new { location = \"_TO_REPLACE_\" }) %>\';
window.location.href = url.replace(\'_TO_REPLACE_\',location);
return false;
});
, 您实际上不需要这里的任何形式,只需在Submit按钮上实现onclick
事件,并将位置值附加到您的URL并使用此javascript代码进行GET请求。
var loc = document.getElementById(\"location\");
document.location.href = \"/home/search/\"+loc.value;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。