编程语言
首页 > 编程语言> > c# – ASP.NET MVC Routing,Html.BeginForm

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