c# – ASP.NET MVC Routing,Html.BeginForm
作者:互联网
<% using (Html.BeginForm("SearchByZip", "Dealer", new { zip = ""}, FormMethod.Get))
{ %>
<div>
<input type="text" class="padLeft" name="Zip" id="Zip" style="width: 200px" />
<input type="submit" class="btnFind" value="Find" />
</div>
<% } %>
这给了我的网址“Dealer / SearchByZip?Zip = 12345”
我想最终得到这个:“经销商/邮编/ 12345”
(如果我手动输入网址“Dealer / Zip / 12345”,它会返回正确的结果,但是当我点击提交时,它会出现“Dealer / SearchByZip?Zip = 12345”
我错过了什么?
routes.MapRoute(
"DealerSearchByZip",
"Search/Zip/{zip}",
new { Controller = "Dealer", action = "SearchByZip", zip = "" }
);
解决方法:
发生这种情况是因为“Zip”是表单中的输入字段,而不是路由数据.因此,当呈现页面时,它使用默认路由创建一个URL(“DealerSearchByZip”路由未匹配,因为Zip未作为路由数据给出).
您可以通过javascript完成此操作,通过在更新“zip”字段时更新表单上的“action”属性.
使用jQuery的示例:
$('input[name=Zip]').update(function(){
$('form').attr('action', 'Dealer/Zip/' + $(this).val());
});
或者,因为Zip是您唯一担心的值,
$('form').submit(function(){
window.location = 'Dealer/Zip/' + $('input[name=Zip]').val();
});
标签:c,asp-net-mvc,asp-net-mvc-3,asp-net-mvc-routing 来源: https://codeday.me/bug/20190630/1339125.html