ASP MVC3 - 选择jQuery自动完成值后,再次调用控制器

时间:2013-04-15 16:41:04

标签: asp.net-mvc asp.net-mvc-3 jquery-ui jquery

以下是我在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方法以使用银行名称作为参数。

1 个答案:

答案 0 :(得分:1)

我通过处理“select”事件做了类似的事情。它不像你在你的例子中那样“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);
            })
        }
    });
});
相关问题