我有以下课程:
public class Regex
{
public int Id { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public string MessageExpression { get; set; }
}
另一个静态类的Regex
列表名为RegexHelper
在我的视图中我使用该命名空间,所以我可以看到静态列表。现在我想填充这样的下拉列表:
<div class="col-md-9">
@Html.DropDownListFor(RegexHelper.listOfRegex, new SelectList(RegexHelper.listOfRegex, "Value", "Id",RegexHelper.listOfRegex.Select(p=> p.Id).First()));
</div>
但似乎DropDownListFor
无效,它告诉我必须明确指定参数。
任何想法。
答案 0 :(得分:1)
您不能使用DropDownList For 作为第一个参数引用您想要设置值的字段。
DropDownList可以正常工作:
@Html.DropDownList("Regex", new SelectList(RegexHelper.ListOfRegex, "Value", "Id", RegexHelper.ListOfRegex.Select(p => p.Id).First()))
如果您的控制器带有型号,例如TestResult中
public class HomeController : Controller
{
public ActionResult Foo()
{
return View(new TestResult());
}
[HttpPost]
public ActionResult Foo(TestResult t)
{
return View(t);
}
}
public class TestResult
{
public string SelectedRegex { get; set; }
}
然后你可以用DropDownListFor
设置它@using (Html.BeginForm())
{
<div class="col-md-10">
@Html.DropDownListFor(model => model.SelectedRegex, new SelectList(RegexHelper.ListOfRegex, "Value", "Id", RegexHelper.ListOfRegex.Select(p => p.Id).First()))
</div>
}