0

下面是我在 ASP MVC 视图中引用的 jQuery 版本

<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script>

使用autocomplete小部件,我希望表单根据用户从autocomplete列表中的选择填写一个单独的文本框。在此页面上,用户将开始输入银行名称。一旦用户选择了他们需要的银行,另一个名为 的字段Dynamics ID需要填充适当的值。这是现在编写的 jQuery

$(function () {
    $("#BankNameAuto").autocomplete({
        source: '@Url.Action("GetBanks", "AgentTransmission")',
        minLength: 1,
        onComplete: function (data) {
            $.getJSON('@Url.Action("GetDynamicsId", "AgentTransmission")', data, function (result) {
                $('Dynamics').val(result);
            })
        }
    });
});

这是上面jQuery中调用的两个控制器方法

    //GET
    public JsonResult GetBanks(string term)
    {
        var banks = from c in db.BankListMaster.Where(n => n.BankName.Contains(term))
                        select c.BankName;

        banks = banks.Distinct();

        return Json(banks, JsonRequestBehavior.AllowGet);
    }

    //GET
    public JsonResult GetDynamicsId(string term)
    {
        var dynamics = from c in db.BankListMaster.Where(n => n.BankName.Equals(term))
                    select c.LinkRepsToDynamicsUniqueId;

        dynamics = dynamics.Distinct();

        return Json(dynamics, JsonRequestBehavior.AllowGet);
    }

一旦用户从列表中进行了选择,我希望能够将ID值发送回该银行。它作为BankListMaster表的主键,其中BankNameDynamicsId都是字段。但是,我还是 jQuery 的新手,所以我可能无法做到这一点。

现在,我已经在两个控制器方法的第一行设置了一个断点。断点每次都会触发,GetBanks但是我根本无法GetDynamicsId触发。

编辑

由于我只BankName在第一个查询中选择了字段,因此我调整了GetDynamicsId使用银行名称作为参数的方法。

4

1 回答 1

1

我通过处理“选择”事件来做类似的事情。它不是您在示例中的“onComplete”。您进行此更改的代码将是:

$(function () {
    $("#BankNameAuto").autocomplete({
        source: '@Url.Action("GetBanks", "AgentTransmission")',
        minLength: 1,
        select: function (event, ui) {
            $.getJSON('@Url.Action("GetDynamicsId", "AgentTransmission")', { term: ui.item.value }, function (result) {
                $('Dynamics').val(result);
            })
        }
    });
});
于 2013-04-15T16:53:25.400 回答