jQuery / Ajax将未定义的参数传递给ASP MVC控制器

时间:2013-04-22 22:22:36

标签: jquery ajax asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

在我的程序感觉不一样的时候,这应该是一个简单的操作。当用户在我视图中的字段中输入任意数量的文本时,他们应该能够点击放大镜,该放大镜将发送的文本发送到控制器,控制器又调用Web服务并执行公司名称搜索。

下面是我创建的一个函数,它只是将两个参数发送到ASP MVC 3控制器。当我在Chrome调试器和控制器中的Visual Studio中查看变量searchItem时,我可以看到它是nullundefined但是第二项始终是正常的。

function GetCompDetails() {
    var searchItem = $('#DRMCompanyId').val;
    var request = $.ajax({
        type: 'POST',
        url: '@Url.Action("compSearch", "AgentTransmission")',
        data:
            {
                searchFilter: searchItem,
                url: location.protocol + '//' + location.host
            },
        dataType: 'html',
        success: function (data) {
            alert(data);
        },
        error: function (data) {
            alert("Unable to process your resquest at this time.");
        }
    });
}

以下是我正在使用的<div>应该传递searchItem参数。如您所见,我尝试了两种不同的方法来创建文本框/输入区域。但是,两者都将参数传递为undefined

非常感谢任何帮助。

    <div class="M-editor-field">
        <img src="@Url.Content("~/Content/Images/magnify.gif")" onclick="GetCompDetails()" />
        @Html.TextBoxFor(model => model.BankName, new { id = "DRMCompanyId" })
        @*@Html.EditorFor(model => model.DRMCompanyId)*@
        @Html.ValidationMessageFor(model => model.DRMCompanyId)
    </div>

以下是我的控制器的方法签名。 searchFilter每次undefined,但url参数正常工作。

    [HttpPost]
    public string compSearch(string searchFilter, string url)
    {

1 个答案:

答案 0 :(得分:1)

您的Javascript中有错误,在第一行中您忘记了错误

function GetCompDetails() {
    var searchItem = $('#DRMCompanyId').val();    // You need to add parenthesis if you call a function
    var request = $.ajax({
        type: 'POST',
        url: '@Url.Action("compSearch", "AgentTransmission")',
        data:
            {
                searchFilter: searchItem,
                url: location.protocol + '//' + location.host
            },
        dataType: 'html',
        success: function (data) {
            alert(data);
        },
        error: function (data) {
            alert("Unable to process your resquest at this time.");
        }
    });
}