карта Html.BeginForm для маршрута - PullRequest
1 голос
/ 18 марта 2012

Здравствуйте
Мой вопрос является точной копией ASP.NET MVC Routing, Html.BeginForm ,
Я снова отправляю сообщения, потому что предлагаемое решение не работает ..
мой просмотр:

@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-адрес это <a href="http://localhost:4893/Home/Search?q=Brabant&SearchType=ZipCode&x=51&y=5" rel="nofollow noreferrer">http://localhost:4893/Home/Search?q=Brabant&SearchType=ZipCode&x=51&y=5, я хочу, чтобы это было Домой / Поиск / Брабант/ ZipCode


РЕДАКТИРОВАТЬ:

Я не думаю, что это как-то связано с маршрутами, JavaScript не работает!моя проблема заключается в том, чтобы сначала генерировать URL, а не совпадать с ним.

$('form').submit(function () {
        var data = $('input[name="q"]', this).val();
        window.location.href = this.action + '/' + encodeURIComponent(data);
        return false;
    });

Ответы [ 3 ]

1 голос
/ 20 марта 2012

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>
            }
0 голосов
/ 19 марта 2012

вы получаете какие-либо ошибки JavaScript?Вы зарегистрировались в Firebug или Chrome Dev Tools?

Почему бы вам просто не отправить форму

@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

$("#submit").click(function(e){
 $(this).closest('form').submit();
});
0 голосов
/ 18 марта 2012

указать новый маршрут в Global.ascx

 routes.MapRoute(
              "SearchRoute",
              "{controller}/{action}/{q}/{SearchType}/{x}/{y}",
              new {controller = "Home",action = "Search",q="",SearchType=""},

            );

EDIT:

после опубликованных вами маршрутов ваши маршруты выглядят хорошо, попробуйте определить их выше маршрута по умолчанию

...