我来到 Stackoverflow 的智者委员会,因为我需要一些魔法(似乎)来解决我的代码的一个小问题。
我正在尝试从我的下拉列表中接收数据,我尝试了很多咒语……但我觉得我的力量太弱了。我尝试从下拉列表中检索数据导致我的计算机有点恶心。所以我来找你们,希望你们的智慧(甚至是一个词吗?)可以帮助我想出正确的代码来解决这个问题。
这是我的代码的样子
模型(对于模型来说不是很漂亮):
namespace HouseGaurd.Models
{
public class DropList
{
public SelectList LettingList { get; set; }
}
控制器填满列表:(这是 Httpget)
public ActionResult lettingselect()
{
var model = _db.EstateAgents;
DropList rlist = new DropList();
List<SelectListItem> listItems = new List<SelectListItem>();
foreach (var item in model)
{
listItems.Add(new SelectListItem()
{
Value = item.estateAgentID.ToString(),
Text = item.CompanyName
});
}
rlist.LettingList = new SelectList(listItems, "Value", "Text");
return View(rlist);
}
所以这填充了列表,这是显示的模型,到目前为止一切正常,咒语成立:
<h2>Select a </h2>
@using (Html.BeginForm()) {
@Html.DropDownList("product", Model.LettingList)
<p>
<input type="submit" value="select" />
</p>
}
它使用相关信息填充下拉列表!
现在,当我点击提交并返回 POST 控制器时,这就是计算机开始呕吐的时候:
[HttpPost]
public ActionResult lettingselect(DropList viewModel)
{
using (var context = new HouseDB())
{
var agent = viewModel.LettingList.DataTextField; //null reference
var hID = context.HouseListers.Single(d=>d.user == User.Identity.Name);
var let = new Letting();
let.approved = false;
let.user = User.Identity.Name;
let.lettingAgent = agent;
let.houseID = hID.houseID;
let.noProblemsRaised = 0;
context.Lettings.Add(let);
context.SaveChanges();
}
return RedirectToAction("Complete");
}
我正在尝试取回所选值,我尝试使用:
var agent = viewModel.LettingList.DataTextField; //null reference
但正如代码中所述,这会返回一个空引用异常。
聪明的巫师们,请花点时间与我分享您关于如何最好地解决这个问题的智慧。
非常感谢。学徒法师。
编辑:这是实际错误:
Object reference not set to an instance of an object.
这是视图中的模型
@model HouseGaurd.Models.DropList
这会导致问题吗?