Asp.net mvc 4 System.ArgumentNullException:值不能为null。参数名称:items

Asp.net mvc 4 System.ArgumentNullException:值不能为null。参数名称:items,asp.net-mvc-4,html-select,Asp.net Mvc 4,Html Select,我收到错误System.ArgumentNullException:值不能为null。参数名称:此行的项: @Html.DropDownList("empnames", new SelectList(ViewBag.empnames), "Select"); var empnames = (from ename in dc.GetTable<Employee_Detail>() where ename.Region ==rgn select ename.Emp_Name).ToLi

我收到错误
System.ArgumentNullException:值不能为null。参数名称:此行的项

@Html.DropDownList("empnames", new SelectList(ViewBag.empnames), "Select");
var empnames = (from ename in dc.GetTable<Employee_Detail>() where ename.Region ==rgn select ename.Emp_Name).ToList();
ViewBag.empnames = empnames;
我想从所选的
Emp\u名称中获取相应的
Emp\u id
,并想更新我的表
Enq\u提交

我的模型、控制器和视图如下:

型号:

namespace MvcConQuery.Models
{

[Table("Enq_Submission")]
public class EnquiryModel
{
private ConQueryDataClassesDataContext dc = new ConQueryDataClassesDataContext();
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Int32 Enq_id { get; set; }
[Required]
[Display(Name="Name")]
public string CustomerName { get; set; }
[ReadOnly(true)]
public string Date
{
get
{
DateTime Date = DateTime.Now;
return Date.ToString("yyyy-MM-dd"); ;
}

set{}

}


[Required]
[Display(Name = "Region")]
public string Region { get; set; }
[Required]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered phone number format is not valid.")]
[Display(Name = "Phone number")]
public string Ph_No { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email_id")]
public string Email_id { get; set; }
[Required]
[Display(Name = "Address")]
public string Address { get; set; }
[Required]
[Display(Name = "Query")]
public string Query { get; set; }
public string Referral { get; set; }
public string Feedback { get; set; }
public string Status { get; set; }
public Int32? Emp_id { get; set; }
public string FollowUpDate { get; set; }
public List<EmployeeModel> Employees { get; set; }

}}

namespace MvcConQuery.Models
{
[Table("Employee_Details")]
public class EmployeeModel
{

[Key,Column(Order=0)]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
//[ForeignKey("EnquiryModel")]
public Int32 Emp_id { get; set; }
public string Emp_Name{ get; set; }
//[Key,Column(Order=1)]
public string Region { get; set; }
//[ForeignKey("Region")]
public string Emp_PhNo { get; set; }
public string Emp_Address { get; set; }
public List<EnquiryModel> Enquires { get; set; }


}

}
public ActionResult Edit(int id)
{

EnquiryModel enquirymodel = db.Enquires.Find(id);
if (enquirymodel == null)
{
return HttpNotFound();
}
var rgn=enquirymodel.Region;
var empnames = (from ename in dc.GetTable<Employee_Detail>() where ename.Region ==rgn select ename.Emp_Name).ToList();
ViewBag.empnames = empnames;

return View(enquirymodel);

}

[HttpPost]
public ActionResult Edit(EnquiryModel enquirymodel,string empnames)
{
if (ModelState.IsValid)
{

var empid = (from eid in dc.GetTable<Employee_Detail>() where eid.Emp_Name == empnames select eid.Emp_id).First();
enquirymodel.Emp_id = empid;
db.SaveChanges();
}
return View(enquirymodel);
}
@model MvcConQuery.Models.EnquiryModel

@{
ViewBag.Title = "Edit";

}
<style>
.myClass label{
font-weight:bold;
}
</style>

<h2>Allocate Employee</h2>

@using (Html.BeginForm())
{
@Html.ValidationSummary(true)

<fieldset>
<legend>EnquiryModel</legend>
@Html.HiddenFor(model => model.Enq_id)
@Html.HiddenFor(model => model.CustomerName)
@Html.HiddenFor(model => model.Date)
@Html.HiddenFor(model => model.Region)
@Html.HiddenFor(model => model.Ph_No)
@Html.HiddenFor(model => model.Email_id)
@Html.HiddenFor(model => model.Address)
@Html.HiddenFor(model => model.Query)
@Html.HiddenFor(model => model.Referral)
@Html.HiddenFor(model => model.Feedback)
@Html.HiddenFor(model => model.Status)
@Html.HiddenFor(model => model.FollowUpDate)
@Html.HiddenFor(Model => Model.Emp_id);


<div class="editor-label">
@Html.LabelFor(model => model.CustomerName, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.CustomerName)

<div class="editor-label">
@Html.LabelFor(model => model.Region, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Region)

<div class="editor-label">
@Html.LabelFor(model => model.Ph_No, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Ph_No)

<div class="editor-label">
@Html.LabelFor(model => model.Email_id, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Email_id)

<div class="editor-label">
@Html.LabelFor(model => model.Address, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Address)<div class="editor-label">

@Html.LabelFor(model => model.Query, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Query)


@Html.Label("Select Employee", new { @class = "label" })
@Html.DropDownList("empnames", new SelectList(ViewBag.empnames), "Select");

<p>
<input type="submit" value="Allocate" name="Submit"/>
</p>

</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
namespace mvcquery.Models
{
[表(“Enq_提交”)]
公共类查询模型
{
private AcquiredDataClasseSDataContext dc=新的AcquiredDataClasseSDataContext();
[关键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Int32 Enq_id{get;set;}
[必需]
[显示(Name=“Name”)]
公共字符串CustomerName{get;set;}
[只读(正确)]
公共字符串日期
{
得到
{
DateTime Date=DateTime.Now;
返回日期。ToString(“yyyy-MM-dd”);
}
集合{}
}
[必需]
[显示(Name=“Region”)]
公共字符串区域{get;set;}
[必需]
[RegularExpression(@“^\(([0-9]{3})\)?[-.]([0-9]{3})[-.]?([0-9]{4})$”,ErrorMessage=“输入的电话号码格式无效。”)]
[显示(Name=“电话号码”)]
公共字符串Ph_No{get;set;}
[必需]
[数据类型(数据类型.电子邮件地址)]
[显示(Name=“Email\u id”)]
公共字符串Email_id{get;set;}
[必需]
[显示(Name=“Address”)]
公共字符串地址{get;set;}
[必需]
[显示(Name=“查询”)]
公共字符串查询{get;set;}
公共字符串引用{get;set;}
公共字符串反馈{get;set;}
公共字符串状态{get;set;}
public Int32?Emp_id{get;set;}
公共字符串FollowUpDate{get;set;}
公共列表雇员{get;set;}
}}
名称空间mvcquery.Models
{
[表(“员工详细信息”)]
公共类雇员模型
{
[键,列(顺序=0)]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
//[外键(“查询模型”)]
public Int32 Emp_id{get;set;}
公共字符串Emp_Name{get;set;}
//[键,列(顺序=1)]
公共字符串区域{get;set;}
//[外键(“区域”)]
公共字符串Emp_PhNo{get;set;}
公共字符串Emp_地址{get;set;}
公共列表查询{get;set;}
}
}
控制器:

namespace MvcConQuery.Models
{

[Table("Enq_Submission")]
public class EnquiryModel
{
private ConQueryDataClassesDataContext dc = new ConQueryDataClassesDataContext();
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Int32 Enq_id { get; set; }
[Required]
[Display(Name="Name")]
public string CustomerName { get; set; }
[ReadOnly(true)]
public string Date
{
get
{
DateTime Date = DateTime.Now;
return Date.ToString("yyyy-MM-dd"); ;
}

set{}

}


[Required]
[Display(Name = "Region")]
public string Region { get; set; }
[Required]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered phone number format is not valid.")]
[Display(Name = "Phone number")]
public string Ph_No { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email_id")]
public string Email_id { get; set; }
[Required]
[Display(Name = "Address")]
public string Address { get; set; }
[Required]
[Display(Name = "Query")]
public string Query { get; set; }
public string Referral { get; set; }
public string Feedback { get; set; }
public string Status { get; set; }
public Int32? Emp_id { get; set; }
public string FollowUpDate { get; set; }
public List<EmployeeModel> Employees { get; set; }

}}

namespace MvcConQuery.Models
{
[Table("Employee_Details")]
public class EmployeeModel
{

[Key,Column(Order=0)]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
//[ForeignKey("EnquiryModel")]
public Int32 Emp_id { get; set; }
public string Emp_Name{ get; set; }
//[Key,Column(Order=1)]
public string Region { get; set; }
//[ForeignKey("Region")]
public string Emp_PhNo { get; set; }
public string Emp_Address { get; set; }
public List<EnquiryModel> Enquires { get; set; }


}

}
public ActionResult Edit(int id)
{

EnquiryModel enquirymodel = db.Enquires.Find(id);
if (enquirymodel == null)
{
return HttpNotFound();
}
var rgn=enquirymodel.Region;
var empnames = (from ename in dc.GetTable<Employee_Detail>() where ename.Region ==rgn select ename.Emp_Name).ToList();
ViewBag.empnames = empnames;

return View(enquirymodel);

}

[HttpPost]
public ActionResult Edit(EnquiryModel enquirymodel,string empnames)
{
if (ModelState.IsValid)
{

var empid = (from eid in dc.GetTable<Employee_Detail>() where eid.Emp_Name == empnames select eid.Emp_id).First();
enquirymodel.Emp_id = empid;
db.SaveChanges();
}
return View(enquirymodel);
}
@model MvcConQuery.Models.EnquiryModel

@{
ViewBag.Title = "Edit";

}
<style>
.myClass label{
font-weight:bold;
}
</style>

<h2>Allocate Employee</h2>

@using (Html.BeginForm())
{
@Html.ValidationSummary(true)

<fieldset>
<legend>EnquiryModel</legend>
@Html.HiddenFor(model => model.Enq_id)
@Html.HiddenFor(model => model.CustomerName)
@Html.HiddenFor(model => model.Date)
@Html.HiddenFor(model => model.Region)
@Html.HiddenFor(model => model.Ph_No)
@Html.HiddenFor(model => model.Email_id)
@Html.HiddenFor(model => model.Address)
@Html.HiddenFor(model => model.Query)
@Html.HiddenFor(model => model.Referral)
@Html.HiddenFor(model => model.Feedback)
@Html.HiddenFor(model => model.Status)
@Html.HiddenFor(model => model.FollowUpDate)
@Html.HiddenFor(Model => Model.Emp_id);


<div class="editor-label">
@Html.LabelFor(model => model.CustomerName, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.CustomerName)

<div class="editor-label">
@Html.LabelFor(model => model.Region, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Region)

<div class="editor-label">
@Html.LabelFor(model => model.Ph_No, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Ph_No)

<div class="editor-label">
@Html.LabelFor(model => model.Email_id, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Email_id)

<div class="editor-label">
@Html.LabelFor(model => model.Address, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Address)<div class="editor-label">

@Html.LabelFor(model => model.Query, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Query)


@Html.Label("Select Employee", new { @class = "label" })
@Html.DropDownList("empnames", new SelectList(ViewBag.empnames), "Select");

<p>
<input type="submit" value="Allocate" name="Submit"/>
</p>

</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
public ActionResult编辑(int-id)
{
inquiryModel inquiryModel=db.inquires.Find(id);
if(inquiryModel==null)
{
返回HttpNotFound();
}
var rgn=查询模型区域;
var empnames=(来自dc.GetTable()中的ename,其中ename.Region==rgn选择ename.Emp_Name.ToList();
ViewBag.empnames=empnames;
返回视图(查询模型);
}
[HttpPost]
公共操作结果编辑(查询模型查询模型、字符串名称)
{
if(ModelState.IsValid)
{
var empid=(来自dc.GetTable()中的eid,其中eid.Emp_Name==empnames选择eid.Emp_id).First();
inquiryModel.Emp_id=empid;
db.SaveChanges();
}
返回视图(查询模型);
}
查看:

namespace MvcConQuery.Models
{

[Table("Enq_Submission")]
public class EnquiryModel
{
private ConQueryDataClassesDataContext dc = new ConQueryDataClassesDataContext();
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public Int32 Enq_id { get; set; }
[Required]
[Display(Name="Name")]
public string CustomerName { get; set; }
[ReadOnly(true)]
public string Date
{
get
{
DateTime Date = DateTime.Now;
return Date.ToString("yyyy-MM-dd"); ;
}

set{}

}


[Required]
[Display(Name = "Region")]
public string Region { get; set; }
[Required]
[RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$", ErrorMessage = "Entered phone number format is not valid.")]
[Display(Name = "Phone number")]
public string Ph_No { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email_id")]
public string Email_id { get; set; }
[Required]
[Display(Name = "Address")]
public string Address { get; set; }
[Required]
[Display(Name = "Query")]
public string Query { get; set; }
public string Referral { get; set; }
public string Feedback { get; set; }
public string Status { get; set; }
public Int32? Emp_id { get; set; }
public string FollowUpDate { get; set; }
public List<EmployeeModel> Employees { get; set; }

}}

namespace MvcConQuery.Models
{
[Table("Employee_Details")]
public class EmployeeModel
{

[Key,Column(Order=0)]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
//[ForeignKey("EnquiryModel")]
public Int32 Emp_id { get; set; }
public string Emp_Name{ get; set; }
//[Key,Column(Order=1)]
public string Region { get; set; }
//[ForeignKey("Region")]
public string Emp_PhNo { get; set; }
public string Emp_Address { get; set; }
public List<EnquiryModel> Enquires { get; set; }


}

}
public ActionResult Edit(int id)
{

EnquiryModel enquirymodel = db.Enquires.Find(id);
if (enquirymodel == null)
{
return HttpNotFound();
}
var rgn=enquirymodel.Region;
var empnames = (from ename in dc.GetTable<Employee_Detail>() where ename.Region ==rgn select ename.Emp_Name).ToList();
ViewBag.empnames = empnames;

return View(enquirymodel);

}

[HttpPost]
public ActionResult Edit(EnquiryModel enquirymodel,string empnames)
{
if (ModelState.IsValid)
{

var empid = (from eid in dc.GetTable<Employee_Detail>() where eid.Emp_Name == empnames select eid.Emp_id).First();
enquirymodel.Emp_id = empid;
db.SaveChanges();
}
return View(enquirymodel);
}
@model MvcConQuery.Models.EnquiryModel

@{
ViewBag.Title = "Edit";

}
<style>
.myClass label{
font-weight:bold;
}
</style>

<h2>Allocate Employee</h2>

@using (Html.BeginForm())
{
@Html.ValidationSummary(true)

<fieldset>
<legend>EnquiryModel</legend>
@Html.HiddenFor(model => model.Enq_id)
@Html.HiddenFor(model => model.CustomerName)
@Html.HiddenFor(model => model.Date)
@Html.HiddenFor(model => model.Region)
@Html.HiddenFor(model => model.Ph_No)
@Html.HiddenFor(model => model.Email_id)
@Html.HiddenFor(model => model.Address)
@Html.HiddenFor(model => model.Query)
@Html.HiddenFor(model => model.Referral)
@Html.HiddenFor(model => model.Feedback)
@Html.HiddenFor(model => model.Status)
@Html.HiddenFor(model => model.FollowUpDate)
@Html.HiddenFor(Model => Model.Emp_id);


<div class="editor-label">
@Html.LabelFor(model => model.CustomerName, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.CustomerName)

<div class="editor-label">
@Html.LabelFor(model => model.Region, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Region)

<div class="editor-label">
@Html.LabelFor(model => model.Ph_No, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Ph_No)

<div class="editor-label">
@Html.LabelFor(model => model.Email_id, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Email_id)

<div class="editor-label">
@Html.LabelFor(model => model.Address, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Address)<div class="editor-label">

@Html.LabelFor(model => model.Query, new { @class = "label" })
</div>

@Html.DisplayFor(model => model.Query)


@Html.Label("Select Employee", new { @class = "label" })
@Html.DropDownList("empnames", new SelectList(ViewBag.empnames), "Select");

<p>
<input type="submit" value="Allocate" name="Submit"/>
</p>

</fieldset>
}

<div>
@Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
@model mvcquery.Models.inquirymodel
@{
ViewBag.Title=“编辑”;
}
.myClass标签{
字体大小:粗体;
}
分配员工
@使用(Html.BeginForm())
{
@Html.ValidationSummary(true)
查询模型
@Html.HiddenFor(model=>model.Enq_id)
@Html.HiddenFor(model=>model.CustomerName)
@Html.HiddenFor(model=>model.Date)
@Html.HiddenFor(model=>model.Region)
@Html.HiddenFor(model=>model.Ph\u No)
@Html.HiddenFor(model=>model.Email\u id)
@Html.HiddenFor(model=>model.Address)
@Html.HiddenFor(model=>model.Query)
@Html.HiddenFor(model=>model.reference)
@Html.HiddenFor(model=>model.Feedback)
@Html.HiddenFor(model=>model.Status)
@Html.HiddenFor(model=>model.FollowUpDate)
@Html.HiddenFor(Model=>Model.Emp_id);
@LabelFor(model=>model.CustomerName,新的{@class=“label”})
@DisplayFor(model=>model.CustomerName)
@LabelFor(model=>model.Region,新的{@class=“label”})
@DisplayFor(model=>model.Region)
@LabelFor(model=>model.Ph_No,new{@class=“label”})
@DisplayFor(model=>model.Ph\u No)
@LabelFor(model=>model.Email_id,新的{@class=“label”})
@DisplayFor(model=>model.Email\u id)
@LabelFor(model=>model.Address,新的{@class=“label”})
@DisplayFor(model=>model.Address)
@LabelFor(model=>model.Query,新的{@class=“label”})
@DisplayFor(model=>model.Query)
@Label(“选择雇员”,新建{@class=“Label”})
@DropDownList(“empnames”,新选择列表(ViewBag.empnames),“Select”);

} @ActionLink(“返回列表”、“索引”) @节脚本{ @Scripts.Render(“~/bundles/jqueryval”) }

有谁能帮我解决这个问题吗?

我想你是在
编辑视图中

与第一个
Edit
操作相反,第二个操作没有这一行:

@Html.DropDownList("empnames", new SelectList(ViewBag.empnames), "Select");
var empnames = (from ename in dc.GetTable<Employee_Detail>() where ename.Region ==rgn select ename.Emp_Name).ToList();
ViewBag.empnames = empnames;

问题是“编辑”希望填充empnames ViewBag值。 不更新表格的原因是控制器中缺少一行代码,即:

db.Entry(inquirymodel).State=EntityState.Modified

[HttpPost]

    public ActionResult Edit(EnquiryModel enquirymodel,string empnames)
    {
        if (ModelState.IsValid)
        {
            var rgn = enquirymodel.Region;
            var empnamess = (from ename in dc.GetTable<Employee_Detail>() where ename.Region == rgn select ename.Emp_Name).ToList();
            ViewBag.empnames = empnamess;

      var empid = (from eid in dc.GetTable<Employee_Detail>() where eid.Emp_Name == empnames select eid.Emp_id).First();

            db.Entry(enquirymodel).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(enquirymodel);
    }
public ActionResult编辑(查询模型查询模型,字符串名称)
{
if(ModelState.IsValid)
{
var rgn=查询模型区域;
var empnames=(来自dc.GetTable()中的ename,其中ename.Region==rgn选择ename.Emp_Name.ToList();
ViewBag.empnames=empnames;
var empid=(来自dc.GetTable()中的eid,其中eid.Emp_Name==empnames选择eid.Emp_id).First();
db.Entry(inquiryModel).State=EntityState.Modified;
db.SaveChanges();
返回操作(“索引”);
}
返回视图(查询模型);
}

您的问题中有太多的代码,请将其缩小到问题行。什么操作(第一次/第二次)会导致问题?很抱歉,我们不能使用它,因为在第二次编辑的范围内,“empnames”具有不同的含义。@user3350713:但您仍然呈现相同的视图。你必须提供。我有两张桌子,员工桌和工作桌。我有一个下拉列表,其中填充了员工的姓名f