首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >映射Html.BeginForm到路由

映射Html.BeginForm到路由
EN

Stack Overflow用户
提问于 2012-03-18 11:14:12
回答 3查看 1.5K关注 0票数 1

你好

我的问题是ASP.NET MVC Routing , Html.BeginForm的复制品,

我再次发帖是因为建议的解决方案不起作用。

我的观点:

代码语言:javascript
复制
@using (@Html.BeginForm("Search", "Home",FormMethod.Get))
{
        input name="q" id="q" type="text" class="ipt" />
        @Html.DropDownList("SearchType", new SelectList(
      new[] { "All Words", "Any Word", "ZipCode" }, ("All Words")))


        input type="image" src="../../Content/images/search.png" />
}

(我删除了<字符,以便在问题中显示)生成的url是这个Home/Search/Brabant/ZipCode,我希望它是http://localhost:4893/Home/Search?q=Brabant&SearchType=ZipCode&x=51&y=5

编辑:

我认为这与路线无关,javascript不起作用!我的问题是首先生成url,而不是匹配它。

代码语言:javascript
复制
$('form').submit(function () {
        var data = $('input[name="q"]', this).val();
        window.location.href = this.action + '/' + encodeURIComponent(data);
        return false;
    });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-20 18:57:23

javascript必须在表单的

代码语言:javascript
复制
@using (@Html.BeginForm("Search", "Home", FormMethod.Get))
            {
                <script type="text/javascript">
                    $('form').submit(function () {
                        var q = $('input[name="q"]', this).val();
                        var e = document.getElementById("SearchType");
                        var SearchType = e.options[e.selectedIndex].text;

                        var idx = window.location.href.indexOf("/", 7);
                        var siteName = window.location.href.substring(0, idx).replace("http://", "");
                        var newPath = "http://" + siteName + '/' + q + '/' + SearchType;
                        window.location.href = newPath;
                        return false;
                    });
                </script>
                <div class="pf sleft">
                    <input name="q" id="q" type="text" class="ipt" />
                    @Html.DropDownList("SearchType", new SelectList(
              new[] { "All Words", "Any Word", "ZipCode" }, ("All Words")))
                </div>
                <div class="pf sright">
                    <input type="image" onclick="return CheckInput();" src="@Url.Content("~/Content/images/search.png")" />
                </div>
            }
票数 1
EN

Stack Overflow用户

发布于 2012-03-18 11:18:43

在Global.ascx中指定新路由

代码语言:javascript
复制
 routes.MapRoute(
              "SearchRoute",
              "{controller}/{action}/{q}/{SearchType}/{x}/{y}",
              new {controller = "Home",action = "Search",q="",SearchType=""},

            );

编辑:

在您发布的路由之后,您的路由看起来很好,请尝试在默认路由之上定义它们。

票数 0
EN

Stack Overflow用户

发布于 2012-03-19 18:50:10

您收到任何javascript错误吗?您是否签入了firebug或chrome开发工具?

你为什么不把表格交出来

代码语言:javascript
复制
@using (@Html.BeginForm("Search", "Home",FormMethod.Get))
{
        input name="q" id="q" type="text" class="ipt" />
        @Html.DropDownList("SearchType", new SelectList(
      new[] { "All Words", "Any Word", "ZipCode" }, ("All Words")))


        <input id="submit" type="image" src="../../Content/images/search.png" />
     ...^ you had a type here i guess
}

和jquery

代码语言:javascript
复制
$("#submit").click(function(e){
 $(this).closest('form').submit();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9757844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档