如何在Html视图中使用DropDownListFor

时间:2017-06-09 16:29:55

标签: c# html asp.net-mvc

我有以下课程:

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无效,它告诉我必须明确指定参数。

任何想法。

1 个答案:

答案 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>

}