2014-10-07 71 views
-1

我目前有一個局部視圖,呈現在網站上每頁的頂部。這種局部視圖的要點是提供一種讓用戶快速搜索的表單。我已經設置了局部視圖形成了如下:快速搜索表單不提交MVC

@using (Html.BeginForm()) 
      { 
       <div class="col-md-7" style="text-align: right">       
        <div class="input-group input-group-sm col-sm-6 pull-right"> 
         @Html.TextBox("caseReference") 
         <button type="submit"> 
          <i class="fa fa-search"></i> 
         </button> 
        </div> 
       </div> 
      } 
      @Html.Partial("_MainNavigation") 
     </div> 
    </div> 
</nav> 

<script type="text/javascript"> 
    $(function() { 
     $("form").on("submit", function (event) { 
      event.preventDefault(); 
      var request = { caseReference: $('#caseReference').val() }; 
      submitForm(request, '@Url.Action("CaseSearch", "QuickSearch", new { area = "Search" })'); 
     }); 
    }); 

</script> 

但是在網頁的源文件的形式呈現的行動爲主頁的請求與後行動。我已經閱讀了很多例子,這個任務看起來非常直截了當。使用@ html.BeginForm()方法的參數會更好嗎?

+0

我不知道如何回答這個問題,而不僅僅是說「是」......它會給出一個相同的結果,但是可能會出錯的東西更少。 – 2014-10-07 10:01:06

+0

是使用@ html.BeginForm()方法中的參數。並確保你沒有另一種形式的表格。 – 2014-10-07 12:23:40

+0

因此,在開發人員工具中進行調試後,它正在向「搜索/快速搜索/ CaseSearch」發出一個看起來正確的請求並且請求主體包含caseReference。但是,我收到了404錯誤'HTTP 404。您正在查找的資源(或其某個依賴項)可能已被刪除,名稱已更改或暫時不可用。「 – DeanR 2014-10-07 14:11:05

回答

0

因此,花了幾個小時的研究後,我終於得到了快速搜索功能,在我的網站的主頁上工作。在razorview我有以下代碼:

<div class="input-group input-group-sm col-sm-6 pull-right"> 
       @Html.Kendo().MaskedTextBox().Name("name").Mask("000000/0000").Deferred() 
       <button id="search" type="submit"> 
        <i class="fa fa-search"></i> 
       </button> 

<script type="text/javascript"> 
$(function() { 
    $("#search").on("click", function (event) { 
     event.preventDefault(); 
     var value = $('#name').val(); 
     value = value.replace(/[/]/g, "_"); 
     var refVal = value; 
     var url = '@Url.Action("Action", "Contoller", new { area = "Area" })' + '//' + refVal; 
     $.ajax({ 
      type: 'GET', 
      url: url, 
      cache: false, 
      dataType: 'json', 
      contentType: "application/json;", 
      success: function (result) { 
       if (result.success) { 
        window.location.href = result.url; 
       } 
       else { 
        bootbox.alert(result.message); 
       } 
      } 
     }); 
    }); 
}); 

然而,在關於以下行:

 var url = '@Url.Action("Action", "Contoller", new { area = "Area" })' + '//' + refVal; 

如果我硬編碼的網址,並將搜索詞它的工作原理上主頁,因爲我們在根目錄,但從其他頁面失敗,爲了解決這個問題,我嘗試使用@ Url.Action。然而,這是產生以下結果在HTML代碼索裏:

 var url = '' + '//' + refVal; 

有沒有使用來自withing JS的URL.Action方法以某種方式?