前提:我是新的MVC,我的英文不完美,我希望你能理解我的文章,否則我在這裏是爲了解釋。JSON函數 - 層疊DropDownList - 更新模型
我工作在ASP.Net MVC另一個開發人員創建了一個項目,我有這樣的問題:
在視圖中,我有兩個級聯的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視圖,實體框架映射,這是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
一切似乎很好地工作,但是當我保存視圖有時ClientInfo類的VendorCode屬性沒有最後選擇的值。如果我在第一個DropDownList上更改分銷商,在這種情況下,第二個DropDownList(供應商)獲得正確的價值,但是如果我選擇供應商,然後保存模型,那麼屬性VendorCode仍具有第一個值。
我也試圖創建一個函數來測試事件賣方的「變化」的DropDownList ...
$ ("# VendorCode.") Change (function (e) {
SelectId var = $ (this). val();
$. getJSON ('@ Url.Action ("updateVendorCode", "ClientInfo")', {VendorCodePass: SelectId});
});
...而實際上事件觸發正確只有當我不改變經銷商和供應商項目不會重新加載,在這種情況下,事件僅在第一次觸發。
聽起來就像是第二DropDownList中賣方的刷新問題,但我不能找到解決辦法......
Pileggi
對不起,文本是重複的,現在我已經切斷了它。 – lamarmora