MVC3 C#Entity Framework根据下拉列表选择填充文本框

我试过几个链接,这导致我的代码…这是行不通的:D

获取DropDownLists上的Drop并创建级联下拉列表

我试图允许用户从下拉列表中选择一个部件号(itemnmbr),并在选择后,让页面刷新具有正确值的部件描述(itemdesc)文本框。 下面是我最接近的。

查看代码:

    $(document).ready(function () { $("#ITEMNMBR").change(function () { $.get("/PartsLabor/GetPartDesc", $(this).val(), function (data) { $("#ITEMDESC").val(data); }); }); });  @using (Html.BeginForm()) { @Html.ValidationSummary(true) 
Add part to call: @ViewBag.CALLNBR @Html.LabelFor(model => model.ITEMNMBR, "Item Number") @Html.DropDownList("ITEMNMBR", (SelectList) ViewBag.Items, "Please Select a Part #") @Html.ValidationMessageFor(model => model.ITEMNMBR)
@Html.LabelFor(model => model.ITEMDESC, "Description") @Html.EditorFor(model => model.ITEMDESC) @Html.ValidationMessageFor(model => model.ITEMDESC)
}

控制器代码:

  [Authorize] public ActionResult PCreate(string call) { var q = db.IV00101.Select(i => new { i.ITEMNMBR}); ViewBag.Items = new SelectList(q.AsEnumerable(), "ITEMNMBR", "ITEMNMBR"); ViewBag.CALLNBR = call; return View(); } public ActionResult GetPartDesc(char itemnmbr) { var iv101 = db.IV00101.FirstOrDefault(i => i.ITEMNMBR.Contains(itemnmbr)); string desc = iv101.ITEMDESC; return Content(desc); } 

Firefox错误控制台返回:

时间戳:12/28/2012 2:40:29 PM警告:不推荐使用属性的指定属性。 它总是返回true。 源文件: http : //ajax.aspnetcdn.com/ajax/jquery/jquery-1.6.4.min.js行:2

时间戳:12/28/2012 2:40:34 PM警告:不推荐使用getAttributeNode()。 请改用getAttribute()。 源文件:〜/ Scripts / jquery-1.6.4.min.js行:3

Firefox Web Console返回这两个,以及下面的内容(介于上面两个之间):

请求URL:〜/ PartsLabor / GetPartDesc?002N02337请求方法:GET状态代码:HTTP / 1.1 500内部服务器错误

我认为你走在正确的轨道上。 查看此页面上有关如何使用get()的示例。

猜测GetPartDesc永远不会被击中,或者它没有得到你期望的参数。 如果你改变它可能会有效:

  $.get("/PartsLabor/GetPartDesc", $(this).val(), function (data) { $("#ITEMDESC").val(data); }); 

至:

  $.get("/PartsLabor/GetPartDesc", { itemnmbr: $(this).val() }, function (data) { $("#ITEMDESC").val(data); }); 

但我没有测试过它。 我个人也使用jquery .ajax方法来处理这种事情。 我从来没有用过get,虽然看起来有点像你应该工作的东西。 无论如何你可以尝试这样的事情:

  $.ajax({ url: '/PartsLabor/GetPartDesc', data: { itemnmbr: $(this).val() } }).done(function (data) { $("#ITEMDESC").val(data); });