Помещение: Я новичок в MVC, и мой английский не идеален, надеюсь, вы поймете мое сообщение, иначе я здесь для объяснений.Функция JSON - каскадирование DropDownList - обновите модель
Я работаю над проектом, созданным другим разработчиком в ASP.Net MVC, и у меня есть эта проблема:
В View У меня есть два каскадных DropDownList: один с дистрибьюторами, а другие с вендорами Дистрибьютор выбран в первом DropDownList.
Это код:
В теле есть:
<tr>
<td>
<span>Distributor</span>
</td>
<td>
@Html.DropDownList("DistributorID")
@Html.ValidationMessageFor(model => model.DistributorID)
</td>
</tr>
<tr>
<td>
<span>Vendor</span>
</td>
<td class="tdAlignLeft">
@Html.DropDownList("VendorCode")
@Html.ValidationMessageFor(model => model.ClientHeaderInformation.VendorCode)
</td>
</tr>
В скрипте:
$("#DistributorID").change(function (e) {
var SelectGroupId =$(this).val();
$.getJSON('@Url.Action("VendorByDistributor", "ClientInfo")', { VendorGroup: DistributorID }, function (param) {
var vendorCodes = $('#VendorCode');
vendorCodes.empty();
$.each(param, function (index, param) {
vendorCodes.append(
$('<option/>')
.attr('value', param.vendorCode)
.text(param.vendorName)
);
});
});
});
В Контроллер:
public ActionResult VendorByDistributor(int _DistributorID)
{
var Vendors = db.View_Vendors.Where(n => n.DistributorID.Equals(_DistributorID)).Select(
x => new
{
vendorCode = x.VendorCode,
vendorName = x.VendorName
});
return Json(Vendors, JsonRequestBehavior.AllowGet);
}
'View_Vendors' представляет собой вид SQL Server, сопоставляются с Entity Framework, это SQL:
SELECT A.DistributorID, A.DistributorName, B.VendorName, B.VendorCode
FROM dbo.Distributors AS A LEFT OUTER JOIN dbo.Vendors AS B ON
A.VendorCode = dbo.Vendor.VendorCode
Все кажется, работает хорошо, но когда Я сохраняю представление, иногда свойство VendorCode класса ClientInfo не имеет последнего выбранного значения. Это происходит, если я изменил Дистрибьютор на первом DropDownList, в этом случае второй DropDownList (Vendors) получит правильные значения, но если я выберу Поставщика, а затем сохраню модель, свойство VendorCode останется первым.
Я также пытался создать функцию, чтобы проверить событие «изменение» из Поставщиков DropDownList ...
$ ("# VendorCode.") Change (function (e) {
SelectId var = $ (this). val();
$. getJSON ('@ Url.Action ("updateVendorCode", "ClientInfo")', {VendorCodePass: SelectId});
});
... и на самом деле срабатывает событие только правильно, если я не изменить распространителя и элементы Vendor не перезагружаются, в этом случае событие срабатывает только в первый раз.
Похоже, проблема обновления второго DropDownList вендоров, но я не могу найти решение ...
Pileggi
Извините, текст был дублирован, теперь я его обрезал. – lamarmora