我是一個初學者和學習ASP.Net MVC 5,並有很多與我的問題相關的堆棧溢出的答案,但我找不到我在找什麼。如何創建HtmlDropdownListfor在asp.net mvc 5中不使用modelviews在一對多關係
所以,我有兩個模型。 Car and Company
。 一輛車可以屬於 給一家公司,一家公司可以有多輛車。 現在我有一個名爲「車輛登記表格」的表格,其中用戶將看到一個textbox
放置汽車名稱和一個dropdown list to select company name
。
問題:我可以創建一個視圖模型,並顯示公司列表的下拉列表。但我只想知道如果我不允許使用視圖模型,那麼在這種情況下是否可以在Car Entry Form中顯示下拉列表。 在我上面描述的場景中,使用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>
'我不允許使用viewmodel'這是一個學校作業嗎?否則,與使用ViewBag等動態對象相比,使用ViewModel可能會非常清晰且易於維護。 – Win
爲什麼在世界上你不會被允許使用視圖模型?作爲一個方面說明,刪除'SelectList'構造函數中的第四個參數(它什麼也不做) - 它只是'新的SelectList(Model.Companies,「Id」,「Name」)',但是你的屬性真的應該是'IEnumerable Companies(不是'IEnumerable Companies') –
@StephenMuecke:我想如果我想在下拉列表中默認顯示第一個下拉選項,那麼我需要第四個參數。我將把這個屬性改爲'IEnummerable'。感謝您指出。 –
Unbreakable