如何简化我的请求代码?

时间:2012-09-06 09:21:54

标签: c# asp.net entity-framework ienumerable html.dropdownlistfor

我使用这部分代码从我的数据库中获取信息,使用Entity Framework,并在IEnumerable属性中添加所有信息,最后是DropDownListFor显示。 我需要多次使用那种代码,所以我想让它成为最强大的代码。

public IEnumerable<SelectListItem> Functions { get
    {
        List<SelectListItem> result = new List<SelectListItem>();
        using (followupconsultantEntities dataModel = new followupconsultantEntities())
        {
            var myEvents = from e in dataModel.functions
                           select e;
            foreach (var function in myEvents)
            {
                SelectListItem myList = new SelectListItem
                                            {
                                                Value = function.ID_Function.ToString(CultureInfo.InvariantCulture),
                                                Text = function.FU_Name
                                            };
                result.Add(myList);
            }
        }
        return result;
    } }

感谢您的帮助

观点:

<div class="editor-field">
<%: Html.DropDownListFor(m => m.SelectedFunction,Model.Functions) %>
</div>

有关信息,我的控制员:

public ActionResult Register()
    {
        ViewData["PasswordLength"] = MembershipService.MinPasswordLength;
        return View(new RegisterModel());
    }

2 个答案:

答案 0 :(得分:1)

开始使用 System.Web.Mvc.SelectList

public IEnumerable<SelectListItem> Functions { get
{
    using (followupconsultantEntities dataModel = new followupconsultantEntities())
    {
        return new SelectList(dataModel.functions.ToArray(), "ID_Function", "FU_Name");
    }
}

另请考虑 AutoMapper

答案 1 :(得分:1)

试试这个。在此代码中,您将无法从不需要的数据库数据中获取。

public IEnumerable<SelectListItem> Functions { get
{
    using (followupconsultantEntities dataModel = new followupconsultantEntities())
    {
        return new SelectList(dataModel.functions.Select(f=>
               new 
               {
                   Value = function.ID_Function.ToString(CultureInfo.InvariantCulture),
                   Text = function.FU_Name
               })
               .ToArray(), "Value", "Text");
   }

}