我對MVC很新,但是我一直試圖在視圖中使用下拉列表,該列表有一個類型爲列表<>的模型。這是因爲在單個頁面上創建多個記錄。mvc下拉列表與類型列表的模型
我已經能夠成功創建一個不是類型列表<>的視圖,並且一次只有一個記錄,但儘管存在大量的搜索結果,但在使用模型實現視圖時無法實現該解決方案類型列表<>。
型號
public class Product
{
public int ProductID { get; set; }
public string Description { get; set; }
public int VatRateID { get; set; }
[ForeignKey("VatRateID")]
public virtual VatRate VatRate { get; set; }
}
控制器
// GET: /Product/Bulkdata
public ActionResult BulkData()
{
PopulateVatRateDropDownList();
List<Product> model = new List<Product>();
model.Add(new Product
{
ProductID = 0,
Description = "",
VatRateID = 1
}
);
return View(model);
}
//
// POST: /Product/Bulkdata
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult BulkData(
[Bind(Include = "Description,VatRateID")]
List<Product> products)
{
try
{
if (ModelState.IsValid)
{
foreach (var p in products)
{
db.Product.Add(p);
}
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (DataException)
{
ModelState.AddModelError("", "Bulk - Unable to save changes, Try again, and if the probelm persists contact your administrator");
}
PopulateVatRateDropDownList();
return View(products);
}
private void PopulateVatRateDropDownList(object selectedVatRate = null)
{
var vatRateQuery = from v in db.VatRate
select v;
ViewBag.VatRateID = new SelectList(vatRateQuery, "VatRateID", "VatRateDescription", selectedVatRate);
}
查看
@if (Model != null && Model.Count > 0)
{
int j = 0;
foreach (var i in Model)
{
<tr style="border:1px solid black">
<td>
@Html.EditorFor(m => m[j].Description)
@Html.ValidationMessageFor(m => m[j].Description)
</td>
<td>
@Html.DropDownList("VatRateID", String.Empty)
@Html.ValidationMessageFor(m => m[j].VatRateID)
</td>
<td>
@if (j > 0)
{
<a href="#" class="remove">Remove</a>
}
</td>
</tr>
j++;
}
}
當我運行這段代碼的應用程序,然後0總是過去回vatRateID。我已經嘗試了除上述以外的其他許多解決方案,包括 ASP.NET MVC DropDownListFor with model of type List<string>。正如我剛纔提到的,我對mvc很陌生,所以我知道可能有些簡單的東西我缺少。任何幫助將非常感激。
感謝
你不能使用'foreach'循環。請參考[這個答案](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943) –
而你使用'DropDownList()'沒有任何意義 - 它的綁定到'VatRateID',但你的模型是'List'和'List '不包含名爲'VatRateID'的屬性。您還可以使用'[Bind]'屬性排除綁定的所有內容。 –
謝謝斯蒂芬,請你提供一個例子,我應該如何使用DropDownList()在上面的 – user2046411