0

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

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

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参数的。如您所见,我尝试了两种不同的方法来创建文本框/输入区域。然而,两者最终都将参数传递为 is 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)
    {
4

1 回答 1

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.");
        }
    });
}
于 2013-04-22T22:26:14.353 回答