连接两个下拉列表mvc 4
我有一个preepay产品销售。 经销商可以有经销商经销商可以为每个产品设定价格,并且每个产品都有最大限度的优惠。 现在我喜欢在销售页面中我的mvc c#site项目中有两个DropDowmList当我从第一个ddl chack产品时我想要我的其他ddl(他要销售多少产品)从我的db连接。
编辑:例如一个经销商有三个产品销售:productA – 5个单位销售productB – 20 productC – 15当他在第二个ddl或textboxForNumber(min,max)上选择productB时,他应该看到1到20的范围
我尝试创建一个这样的新模型:
public int ProductObligoByDealerID { get; set; } public int DealerID { get; set; } public virtual Dealer Dealer { get; set; } public int ProductID { get; set; } public virtual Product Product { get; set; } public uint MonthObligo { get; set; }
但我无法将这两个ddl连接在一起。
编辑:
我尝试使用ViewBag执行此操作,就像其他ddl资源列表一样。
var AllObligoProdact = db.ProductObligo.Where(p => p.DealerID == currentDealer.DealerID); foreach (var item in AllObligoProdact) ViewBag.ProductObligo[item.Product.ProductID].max = item.MonthObligo;
并在cshtml方面
@Html.LabelFor(model => model.DealerProductID) @Html.DropDownList("DealerProductID", string.Empty) @Html.ValidationMessageFor(model => model.DealerProductID) @Html.LabelFor(model => model.NumOfMonth) @*Html.EditorFor(model => model.NumOfMonth)*@ @Html.TextBoxFor(model => model.NumOfMonth , new {type="number",min="0",max=ViewBag.ProductObligo[Model.DealerProductID].max }) @*.DropDownList("NumOfMonth", string.Empty)*@ @Html.ValidationMessageFor(model => model.NumOfMonth)
但我仍然一无所获:/在db中使用新表是个好主意,或者有更好的方法可以做到这一点?
首先,我将摆脱ViewBag
将数据(用于下拉列表)从控制器传输到View。 我会将其添加为我的ViewModel的属性。
public class ProductSale { public IEnumerable Products{ get; set; } public int SelectedProduct { get; set; } public IEnumerable SaleNumbers{ get; set; } public int SelectedSaleNumber { get; set; } //Other Existing properties also. public ProductSale() { Products=new List (); SaleNumbers=new List (); } }
现在在我的GET Action中,我将设置Products集合并将其发送到View,
public ActionResult Add() { var vm=new ProductSale(); //The below code is hardcoded for demo. you mat replace with DB data. vm.Products= new[] { new SelectListItem { Value = "1", Text = "Product A" }, new SelectListItem { Value = "2", Text = "Dealer B" }, new SelectListItem { Value = "3", Text = "Product C" } }; return View(vm); }
在你的强类型视图中,
@model ProductSale @using(Html.Beginform()) { @Html.DropDownListFor(x => x.SelectedProduct, new SelectList(Model.Products, "Value", "Text"), "Select Product") @Html.DropDownListFor(x => x.SelectedSaleNumber, new SelectList(Model.SaleNumbers, "Value", "Text"), "Select Number to sell") }
现在,当用户从下拉列表中选择一个产品时,我们需要一些javascript来加载要销售的Numbers。 我们将jQuery库包含在这个视图(或Layout视图)中,我们将把这个java脚本添加到我们的视图中。
它的作用是,它监听第一个下拉列表的change
事件,当它发生时,它使用getJSON方法(在我们包含的jquery库中编写)进行GET调用,并以JSON
格式获取结果并解析它并附加那到第二次下拉。
假设GetSaleNumbers
是Product
controller中的一个Action方法,它接受Product
的id并以JSON
格式发送该产品的所有产品销售号。
public ActionResult GetSaleNumbers(int id) { List saleNumbers=new List (); //The below code is hardcoded for demo. you mat replace with DB data //based on the input coming to this method ( product id) saleNumbers.Add(new SelectListItem { Value="1" , Text="1" }, new SelectListItem { Value="2" , Text="2" }, new SelectListItem { Value="3" , Text="2" } ); return Json(saleNumbers,JsonRequestBehavior.AllowGet); }
您必须编写javascript并在第一个下拉列表更新(选择更改)执行ajax调用服务器以从数据库获取数据以使用此数据更新第二个下拉列表。
上述就是C#学习教程:连接两个下拉列表mvc 4分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1029701.html