【发布时间】:2014-04-17 18:46:39
【问题描述】:
这是我的模型类:
public class EstimateModel:estimate
{
public string EstimateNo { get; set; }
//public SelectList Customer { get; set; }
//[DisplayName("Customer ID :")]
public int CustID { get; set; }
[DisplayName("Customer Name :")]
public string CustFname { get; set; }
[DisplayName("Company Name :")]
public string CompanyName { get; set; }
[DisplayName("Total:")]
public decimal total { get; set; }
[DisplayName("Tax1 :")]
public decimal tax1 { get; set; }
public decimal tax2 { get; set; }
public decimal tax3 { get; set; }
public decimal subtot { get; set; }
[DisplayName("Discount :")]
public decimal Discount { get; set; }
[DisplayName("GrandTotal:")]
public decimal grandtotal { get; set; }
public List<estimate> estimates { get; set; }
public EstimateModel()
{
estimates = new List<estimate>();
}
}
这是我的控制器代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(EstimateModel employee)
{
//employee.Customer= new SelectList("CustID","CustFName");
DataTable dt = new DataTable();
//for (int i = 0; i < employee.estimates.Count; i++)
//{
// total = total + employee.estimates[i].Amount;
//} ViewBag.Message = total;
//Skill abc = new Skill();
var sys = db.EstimateMasters.Create();
// var user = db.Adils.Create();
sys.EstimateNo = employee.EstimateNo;
for(int i=0 ;i<employee.estimates.Count;i++)
{
sys.EstimateNo = employee.EstimateNo;
sys.CustID = employee.CustID;
sys.ProductName = employee.estimates[i].ProductName;
sys.Quantity = employee.estimates[i].Quantity;
sys.Price = employee.estimates[i].Price;
sys.Amount = employee.estimates[i].Amount;
sys.Total=employee.total;
sys.Tax1=employee.tax1;
sys.Tax2 = employee.tax2;
sys.Tax3 = employee.tax3;
sys.Discount = employee.Discount;
sys.SubTotal = employee.subtot;
sys.GrandTotal = employee.grandtotal;
db.EstimateMasters.Add(sys);
db.SaveChanges();
}
这是我的视图代码:
<div> @Html.LabelFor(m =>m.CustID)
@Html.DropDownList("CustID", "---Select---")
</div>
</div>
<div>
@Html.LabelFor(m => m.CustFname)
@Html.TextBoxFor(m =>m.CustFname)
@Html.LabelFor(m=>m.CompanyName)
@Html.TextBoxFor(m =>m.CompanyName)
</div>
我在DropDownList:The ViewData item that has the key 'CustID' is of type 'System.Int32' but must be of type 'IEnumerable<SelectListItem>' 上收到此错误。谁能帮帮我?
【问题讨论】:
-
你能告诉我们你的观点的第一行吗?
-
@model isparx.Models.EstimateModel @{ ViewBag.Title = "Create";布局 = "~/Views/Shared/_Layout.cshtml"; }
-
您缺少一些代码块,但您的错误来源很清楚:您正在尝试使用整数属性实例化
DropDownList,但帮助程序需要一个可枚举的 @987654328 集合@。基本上,您需要将所有CustIDs 放在一个列表中。 -
想一想。
CustID是int。您要求系统显示一个下拉列表 - 但是知道该列表中应该出现哪些选项意味着什么?也许切换到DropDownList的不同重载,除了告诉它这是用于哪个字段之外,您还提供了它应该显示的明确项目列表。 -
请同时发布您的
GET控制器。您的(当前)问题出在视图的初始化阶段,而不是发布结果中。
标签: c# asp.net-mvc razor ienumerable