下拉列表更好地作为ViewBag或模型C#/ .NET MVC4的一部分
可能很简单,但我似乎错过了一些东西。
两种型号:
public class Hardware { [Required] public int Id { get; set; } public int SerialNum { get; set; } public int ProductNum { get; set; } public string Notes { get; set; } public DateTime PurchaseDate { get; set; } public DateTime WarrantyExpiration { get; set; } public virtual Manufacturer Manufacturer { get; set; } } public class Manufacturer { public int Id { get; set; } [Required] public string Name { get; set; } public virtual ICollection Hardware { get; set; } }
当我进入硬件创建视图时,我希望能够从制造商的下拉列表中进行选择,并且当它提交时,它应该在硬件和选择的制造商之间建立关系。
目前,我一直在使用以下方法在控制器中构建一个selectList
SelectList selectList = new SelectList(db.Manufacturers, "Id", "Name"); ViewBag.selectList = selectList;
然后在视图中将其强制转换:
@Html.DropDownListFor(model => model.Manufacturer, ViewBag.selectList as SelectList)
但是,似乎应该有更好的方法来执行此操作 – 可能创建一个viewModel,它inheritance自具有SelectList类型属性的硬件?
随着您的应用程序变得越来越复杂,您将看到您的MVC应用程序变成M-VM-VC,VM是专用的ViewModel,它通常会添加UI层所需的所有内容以生成UI。
在这种情况下,我个人不会inheritanceinheritance,因为您的ViewModel不是您的模型的专用版本。 这正是您的UI创建视图所需要的(这完全取决于您)。
我的ViewModel看起来像这样:
public class HardwareVm { public Hardware Hardware { get; set; } public IEnumerable Manufacturers { get; set; } }
在视图中:
@Html.DropDownListFor(model => model.Hardware.Manufacturer, Manufacturers)
控制器:
上述就是C#学习教程:下拉列表更好地作为ViewBag或模型C#/ .NET MVC4的一部分分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var manufacturers = db.Manufacturers.Select(m => new SelectListItem {Text = m.Name, Value = m.Id }); var model = new HardwareVm { Manufacturers = manufacturers };
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1030644.html