2013-03-23 110 views
2

我正在用按鈕做一個經典的搜索字段。我正在使用按鈕的Ajax.ActionLink,並且我無法弄清楚如何獲取發佈在ActionLink中的文本框值。我是這樣的:獲取MVC 4中的Ajax ActionLink的文本框值/剃刀

<div class="input-append"> 
    <input type="text" id="Company_CompanyName" /> 
    @Ajax.ActionLink("search", 
        "CompanySearch", 
         new { searchString = "???" }, 
          new AjaxOptions 
          { 
           HttpMethod = "GET", 
           InsertionMode = InsertionMode.Replace, 
           UpdateTargetId = "CompanySearchResults" 
          }, 
          htmlAttributes: new { @class = "btn" }) 
</div> 

<div id="CompanySearchResults"></div> 

凡???是,我不知道如何從文本框中獲得價值。我該怎麼做?

UPDATE 1:這是一個嵌套形式

正如我應在原來的交/問題已經提到的,這是一個嵌套形式,即存在要提交的外形式。因此,如果我通過在其中提交一個Ajax.BeginForm(),它將調用提交外部表單。我顯然想避免這種情況。

回答

3

好的,所以,我會嘗試使它成爲一個'愚蠢的'鏈接/按鈕,並處理所有通過javascript傳遞的信息。它看起來像下面這樣。

我相信在下面的腳本中有語法錯誤,所以只能用它作爲指導。

<input type="text" id="Company_CompanyName" /> 
<a href="#" id ="CompanySearch" class="btn">Search</a> 
<div id="CompanySearchResults"></div> 


<script type="text/javascript"> 
$('#CompanySearch').click(function() { 
    var searchTerm = $("#Company_CompanyName").text(); 
    $.ajax({ 
     url: @Url.Action("search","CompanySearch") , 
     type: 'POST', 
     contentType: 'application/json; charset=utf-8', 
     data: {'SearchTerm' : searchTerm} // JSON.stringify(searchTerm), 
     success: function(result) { 
      $('#CompanySearchResults').html(result); 
     } 
     }); 
    return false; 
}); 
</script> 
3

這個答案是沒有實際意義的B/C的鏈路wihin一種形式,我會盡量讓另一個答案有點...

使用這個ajax的形式 - 而不是一個鏈接。您需要一個表單來在回發中包含值,即。

@using (Ajax.BeginForm("search", "CompanySearch",new AjaxOptions { HttpMethod = "GET", InsertionMode =  InsertionMode.Replace, UpdateTargetId = "SearchResults" })) 
{  
<h1>Search</h1> 
<input type="text" placeholder="Search Terms" name="SearchTerms"/> 
<input type="submit" name="Command" value="Search" /> 
} 


<div id="SearchResults"></div> 
+1

這部分工作,但只是部分,因爲這種形式嵌套在一個外部形式,所以提交命令將調用外部形式。 – Anders 2013-03-24 14:55:59