gpt4 book ai didi

c# - ASP.NET MVC 路由,Html.BeginForm

转载 作者:行者123 更新时间:2023-11-30 12:16:09 25 4
gpt4 key购买 nike

<% 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>
<% } %>

这给了我 url "Dealer/SearchByZip?Zip=12345"我想以这样的结尾:“Dealer/Zip/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 路由,Html.BeginForm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5918014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com