2012-03-18 89 views
1

你好
我的問題是ASP.NET MVC Routing , Html.BeginForm的精確複製品,
IM再次發佈,因爲建議的解決方案不工作..
我的觀點:
地圖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是這樣的http://localhost:4893/Home/Search?q=Brabant&SearchType=ZipCode&x=51&y=5,我想這是主頁/搜索/布拉班特/郵編


編輯:

我不認爲它是與路線,JavaScript的不工作!我的問題是首先生成的網址,不匹配它。

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

我相信我們需要查看路由的代碼(在global.asax中)以提供幫助。 – 2012-03-18 11:18:46

+0

routes.MapRoute( null,//路由名稱 「」,//帶參數的URL 新{controller =「Home」,action =「Index」} ); routes.MapRoute(NULL, 「主頁/搜索/ {Q}/{檢索類別}/{X}/{Y}」, 新{控制器= 「主頁」,動作= 「搜索」},//默認 new {page = @「\ d +」} // Constraints:page must be numeric ); routes.MapRoute(null, 「{q}/{SearchType}/Page {page}」, new {controller =「Home」,action =「Search」},// Defaults new {page = @「\ d +「} //約束:頁面必須是數字 ); routes.MapRoute(null,「{controller}/{action}」); – 2012-03-18 11:49:40

回答

1

的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

在Global.ascx指定新的路線

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

      ); 

編輯:

您已發佈的路線後,你的路由看起來不錯,嘗試定義默認路由上面擺着

0

你會得到任何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的

$("#submit").click(function(e){ 
$(this).closest('form').submit(); 
});