[英]List and create in same view in asp.net mvc
我有以下模型類
public class ProductViewModel
{
public Product Products { get; set; }
public IEnumerable<Product> LProducts { get; set; }
}
public partial class Product
{
public string id { get; set; }
public string detail { get; set; }
}
然后我有List和Create的以下視圖
@model albaraka.Models.ProductViewModel
<table class="table">
<tr>
<th>
ID
</th>
<th>
Detail
</th>
</tr>
@foreach (var obj in Model.LProducts)
{
<tr>
<td>
@Html.DisplayFor(modelItem => obj.id)
</td>
<td>
@Html.DisplayFor(modelItem => obj.detail)
</td>
</tr>
}
</table>
<div>
@using ())
{
<div>
<fieldset>
<legend>Account Information</legend>
<div class="editor-label">
@Html.LabelFor(m => m.id)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.Products.id)
@Html.ValidationMessageFor(m => m.Products.id)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Products.detail)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.Products.detail)
@Html.ValidationMessageFor(m => m.Products.detail)
</div>
<p>
<input type="submit" value="Submit" />
</p>
</fieldset>
</div>
}
</div>
@section Scripts
{}
這是列表的控制器方法
[HttpGet]
public ViewResult Product_List()
{
ProductViewModel viewModelList = new ProductViewModel();
viewModelList.LProducts = from products in db.Product
where products.details == "Pending"
select products;
return View(viewModelList.LProducts.ToList());
}
但在這里我得到了跟隨錯誤
傳遞到字典中的模型項的類型為'System.Collections.Generic.List`1 [projectname.Models.Product]',但此字典需要類型為'projectname.Models.ProductViewModel'的模型項。
錯誤是不言自明的,您的視圖接受@model albaraka.Models.ProductViewModel
而不是@model IList<albaraka.Models.ProductViewModel>
。 在您的視圖中,您使用的是@model albaraka.Models.ProductViewModel
,它指示View所期望的模型是ProductViewModel
類型:
[HttpGet]
public ViewResult Product_List()
{
ProductViewModel viewModelList = new ProductViewModel();
viewModelList.LProducts = (from products in db.AB_Product
where products.details == "Pending"
select products).ToList();
return View(viewModelList);
}
該錯誤可以准確地告訴您問題所在。 您正在向視圖提供Product對象列表,而不是它期望的ProductModelView。 將您的控制器代碼更改為:
[HttpGet]
public ViewResult Product_List()
{
ProductViewModel viewModelList = new ProductViewModel();
viewModelList.LProducts = (from products in db.Product
where products.details == "Pending"
select products).ToList();
return View(viewModelList);
}
好吧,異常文本是不言自明的 - 您將不正確的類型傳遞給視圖。
它應該是
public ViewResult Product_List()
{
ProductViewModel viewModelList = new ProductViewModel();
viewModelList.LProducts = (from products in db.Product
where products.details == "Pending"
select products).ToList();
return View(viewModelList);
}
錯誤的直接原因是您作為參數(List)傳遞的內容與視圖( ProductViewModel
類的實例)所期望的內容類型不匹配。
在您的控制器中,而不是行:
return View(viewModelList.LProducts.ToList());
請嘗試以下方法:
return View(
new ProductViewModel {LProducts = viewModelList.LProducts.ToList()}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.