[英]How to create HtmlDropdownListfor in asp.net mvc 5 without use of modelviews in one to many relationship
我是一个初学者,正在学习ASP.Net MVC 5,并且与我的问题相关的堆栈溢出有很多答案,但我找不到我想要的东西。
所以,我有两个模型。 Car and Company
。 一辆车可以属于一个公司,一个公司可以有许多车 。 现在,我有一个名为“ Car Entry Form ”的表格 ,用户将在其中看到一个textbox
以输入汽车名称,并在dropdown list to select company name
。
问题:我能够创建视图模型并显示带有公司列表下拉列表的表单。 但是我只想知道是否允许我使用viewmodel ,在这种情况下,可以在Car Entry Form中显示下拉列表。 在我上面提到的场景中,使用viewmodel是强制性的还是优先的 。 我可以只使用汽车模型,并以某种方式合并公司的下拉列表吗? 我说得通吗
Viewmodel解决方案
汽车模型
public class Car
{
public int Id { get; set; }
public string CarName { get; set; }
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
}
公司模式
public class Company
{
public int Id { get; set; }
public string CompanyName { get; set; }
public ICollection<Website> Car { get; set; }
}
视图模型
public class CarViewModel
{
public int Id { get; set; }
public IEnumerable<Company> Companies { get; set; }
public int CompanyId { get; set; }
public string CarName { get; set; }
}
控制器动作
public ActionResult Create()
{
var viewModel = new CarViewModel
{
Companies = _context.Companies.ToList()
};
return View(viewModel);
}
流利的Api
modelBuilder.Entity<Company>()
.HasMany<Car>(w => w.Cars)
.WithRequired(w => w.Company)
.HasForeignKey(w => w.CompanyId)
.WillCascadeOnDelete(false);
查看文件
@model WebApplication3.Models.CarFormViewModel
<div class="form-group">
<div class="col-md-10">
@Html.DropDownListFor(m => m.CompanyId, new SelectList(Model.Companies, "Id", "Name", Model.Companies), new { @class = "form-control"})
</div>
</div>
对的,这是可能的。
我经常使用这样的方法:
您的操作应如下所示:
public ActionResult Create()
{
ViewBag.Companies = _context.Companies.ToList();
return View();
}
这是您的看法:
@model WebApplication3.Models.Car
<div class="form-group">
<div class="col-md-10">
@Html.DropDownListFor(m => m.CompanyId, new SelectList(ViewBag.Companies as List<WebApplication3.Models.Company>, "Id", "Name", Model.Companies), new { @class = "form-control"})
</div>
ViewBag是动态对象,用于将对象从控制器传递到视图。
在这里可以找到有关ViewBag的更多信息。
我相信当您创建视图来编辑Car
Model时,其ViewModel应该是Car
而CompanyList不是Car的一部分,它只是帮助用户编辑car。 您知道,您只需要一个CompanyId即可编辑或创建Car,因此最好不要将其用作ViewModel的一部分。 但是,请放心,找到您的最佳做法和方法。 对于要传递给视图的对象如何分隔没有任何规则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.