获取MVC 4 / Razor中Ajax ActionLink的文本框值

时间:2013-03-23 14:11:25

标签: asp.net-mvc-4 razor-2

我正在使用按钮进行经典搜索字段。我正在使用Ajax.ActionLink作为按钮,我无法弄清楚如何获取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>

哪里???是,我不知道如何从文本框中获取值。我该怎么办?

更新1:这是一种嵌套形式

正如我在原帖/问题中应该提到的,这是一个嵌套的表格,即有一个外部表格要提交。因此,如果我在其中创建一个带有提交的Ajax.BeginForm(),它将调用外部表单的提交。我显然想避免这种情况。

2 个答案:

答案 0 :(得分:3)

这个答案没有实际意义b / c链接是一个表格,我会试着再做一个答案......

为此使用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 :(得分: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>