为通过linq调用的美国州创建动态下拉菜单。当我选择一个州然后点击提交时,我会走过代码并显示我正在通过null
。列表显示应该,任何指导都会有所帮助。
如果您需要更多信息,请告诉我并发布信息。
控制器
// GET:
[AllowAnonymous]
public ActionResult DealerLogin()
{
var results = (from a in db1.States
where a.CountryID == 221
select new SelectListItem { Value = a.StateID.ToString() , Text = a.Name }).ToList();
}
查看
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
<div class="form-group">
@Html.LabelFor(model => model.StateId, "States", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.StateId, Model.States.Items as List<SelectListItem>, "-- Select --", new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
模型
public class EditProfile2
{
public int StateId { get; set; }
public SelectList States { get; set; }
}
已更新
好的,我已经更新了所有内容,所以它几乎与@Fran的答案相匹配,似乎他错过了一些东西,但我得到了它的工作。我还拿了@Stephen Muecke所说的并且摆脱了验证。
答案 0 :(得分:2)
你似乎想要解决MVC免费提供的所有内置功能。</ p>
试试这个
您可以使用属性来定义所需内容并修改显示名称,而无需实际写入视图。
视图模型:
public class EditProfile2
{
[Required]
[DisplayName("State")]
public int StateId { get; set; }
public SelectList States {get;set;}
}
查看:仅包含相关部分
由于我们在模型上使用了属性,因此我们不必在视图中提供文本。我们也可以使用DropDownListFor而不是DropDownList。并且还要在此声明中添加“ - 选择状态 - ”选项
<div class="form-group">
@Html.LabelFor(model => model.StateId, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model.StateId, Model.States, "-- Select State --", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.StateId, "", new { @class = "text-danger" })
</div>
</div>
由于我们之前使用过属性和内置框架元素,因此我们的操作方法可以减少。
控制器操作:
[AllowAnonymous]
public ActionResult DealerLogin()
{
var results = (from a in db1.States
where a.CountryID == 221
select new SelectListItem { Value= a.StateID.ToString(), Text = a.Name }).ToList();
return View(new EditProfile2 { States = new SelectList(results)});
}