在我的程序感觉不一样的时候,这应该是一个简单的操作。当用户在我视图中的字段中输入任意数量的文本时,他们应该能够点击放大镜,该放大镜将发送的文本发送到控制器,控制器又调用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
参数。如您所见,我尝试了两种不同的方法来创建文本框/输入区域。但是,两者都将参数传递为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)
{
答案 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.");
}
});
}