MahmoudOmar Ответов: 0

Как я связываю dropdownlist с помощью другого dropdownlist в MVC5?


я хочу привязать данные в drowpdownlist, когда выбираю значение из другого выпадающего списка.

Это мой код:-

//--------Модель-------//
// Модель DeviceProduct //
[Table("DeviceProduct")]
    public partial class DeviceProduct
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public DeviceProduct()
        {
            this.DeviceInfoe = new HashSet<DeviceInfo>();
            this.DeviceModel = new HashSet<DeviceModel>();
        }
        public int ID { get; set; }
        public string Code { get; set; }
        public string Name { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<DeviceInfo> DeviceInfoe { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<DeviceModel> DeviceModel { get; set; }
    }


// Модель DeviceModel //
[Table("DeviceModel")]
public partial class DeviceModel
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public DeviceModel()
    {
        this.DeviceInfoe = new HashSet<DeviceInfo>();
    }
    public int ID { get; set; }
    public Nullable<int> DeviceProductID { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<DeviceInfo> DeviceInfoe { get; set; }
    public virtual DeviceProduct DeviceProduct { get; set; }
}


// в контроллерах //
public ActionResult NewDeviceInfo()
       {
           ViewBag.DeviceProductList = db.DeviceProduct;
           return PartialView("NewDeviceInfo");
       }

       [HttpPost]
       [ValidateAntiForgeryToken]
       public ActionResult NewDeviceInfo(DeviceInfo deviceInfo)
       {
           return view();
       }

       public ActionResult FillDeviceModel(int productId)
       {
           var deviceModels = db.DeviceModel.Where(c => c.DeviceProductID ==  productId);
           return Json(deviceModels, JsonRequestBehavior.AllowGet);
       }


// в виду //
<div class="form-group col-lg-6">
                            @Html.LabelFor(m => m.DeviceProduct.Name, new { @class = "col-lg-2 control-label" })
                            <div class="col-lg-8">
                                @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                                @Html.DropDownListFor(m => m.DeviceProduct, new SelectList(ViewBag.DeviceProductList, "ID", "Name"), WhiteWhaleLanguage.PleaseSelect, new { @class = "form-control" , @onchange="FillDeviceModel()" })
                                @Html.ValidationMessage("UserErrorMsg", htmlAttributes: new { @class = "text-danger" })
                            </div>
                        </div>
                        <div class="form-group col-lg-5">
                            @Html.LabelFor(m => m.DeviceModel.Name, new { @class = "col-lg-2 control-label" })
                            <div class="col-lg-9">
                                @Html.ValidationSummary(true, "", new { @class = "text-danger" })
                                @Html.DropDownListFor(m => m.DeviceModel, new SelectList(Enumerable.Empty<SelectListItem>(), "ID", "Name"), WhiteWhaleLanguage.PleaseSelect, new { @class = "form-control" })
                                @Html.ValidationMessage("UserErrorMsg", htmlAttributes: new { @class = "text-danger" })
                            </div>
                        </div>


// код сценария //

функция FillDeviceModel()
{
var deviceproductid = $('#DeviceProduct'). val();
$.Аякс({
url: '/ ClientsNotifications/FillDeviceModel',
типа: "вам",
тип данных: "JSON",
данные: { DeviceProductID: deviceproductid },
успех: функция (deviceModels) {
$("#DeviceModel"). html("");
$. each(deviceModels, function (i, devicemodel) {
$("#DeviceModel"). append(
$('&ЛТ;вариант&ГТ;&ЛТ;/вариант&ГТ;').вал(DeviceModel.ИД).в формате HTML(DeviceModel.Название));
})
},
функция ошибок()
{
тревога ("Уууууу! Что-то пошло не так..")
}
});
}


Что я уже пробовал:

я пишу этот код, но он не работает, в чем проблема?

F-ES Sitecore

Используйте инструменты отладки, чтобы шагнуть через ваш код, чтобы увидеть, что происходит\не происходит. Вызывается ли метод FillDeviceModel js? Имеет ли deviceproductid ту ценность, которую вы ожидаете? Вызывается ли действие FillDeviceModel?

https://forums.asp.net/t/1982579.aspx?Using+the+browser+s+dev+tools+to+diagnose+ajax+problems+and+other+things+

Одна вещь, которую я вижу, просто взглянув на код, заключается в том, что действие FillDeviceModel ожидает параметр productId, но вы передаете DeviceProductID. Эти два имени должны совпадать, чтобы .net знала, какой параметр получает какое значение.

0 Ответов