我已创建MVC5应用程序,我想在服务器属性的创建使用下拉列表中 我得到转储(错误是:"对象引用没有设置为对象的实例。")当我运行它时我应该怎么做?
我尝试
<div class="form-group">
@Html.LabelFor(model => model.SystemType, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.SystemType, Model.SystemType)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.User, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.User)
@Html.ValidationMessageFor(model => model.User)
</div>
</div>
在模型类中我有以下代码
公共课Amta {
public string User { get; set; }
public IEnumerable<SelectListItem> SystemType
{
get
{
return new[]
{
new SelectListItem {Value = "D", Text = "Dev"},
new SelectListItem {Value = "p", Text = "Production"}
};
}
}
}
答案 0 :(得分:1)
检查DropDownListFor的重载。我觉得你需要使用这个。
第一个表达式应该是一个lambda表达式,它指向一个字符串返回类型的属性。这将返回选定的下拉元素。
第二个表达式应该是您要与下拉列表绑定的列表。
检查这两件事,让我知道它是否仍然不适合你。
这里使用lambda表达式中的SystemType
属性以及列表。
答案 1 :(得分:1)
向Amta模型添加属性,以便在回发表单时收集所选值。
@Html.DropDownList("SelectedSystemType", Model.SystemType)
OR
@Html.DropDownListFor(model => model.SelectedSystemType, Model.SystemType)
public class Amta {
public string User { get; set; }
public string SelectedSystemType { get; set; }
public IEnumerable<SelectListItem> SystemType
{
get
{
return new[]
{
new SelectListItem {Value = "D", Text = "Dev"},
new SelectListItem {Value = "p", Text = "Production"}
};
}
}
}
public ActionResult Test()
{
return View(new TestModel());
}
[HttpPost]
public ActionResult Test(TestModel model)
{
return View(model);
}
@model DemoKendoMvc.Models.TestModel
@{
ViewBag.Title = "Test";
}
@using (Html.BeginForm("Test", "Home", FormMethod.Post))
{
@Html.DropDownListFor(model => model.SelectedSystemType, Model.SystemType)
@Html.EditorFor(model => model.User)
@Html.ValidationMessageFor(model => model.User)
<input type="submit" value="Submit" />
}
public class TestModel
{
public string User { get; set; }
public string SelectedSystemType { get; set; }
public IEnumerable<SelectListItem> SystemType
{
get
{
return new[]
{
new SelectListItem {Value = "D", Text = "Dev"},
new SelectListItem {Value = "p", Text = "Production"}
};
}
}
}
public ActionResult Create()
{
return View(new TestModel());
}
[HttpPost]
public ActionResult Create(TestModel model)
{
try
{
// TODO: Add insert logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
如果您在创建视图时使用创建模板,则 SelectedSystemType 将创建为 EditorFor 。因此,您需要将其更改为 DropDownListFor 。
@Html.DropDownListFor(model => model.SelectedSystemType, Model.SystemType)