asp.net-mvc – ASP.NET MVC 3列表到IEnumerable
发布时间:2020-05-22 11:58:33 所属栏目:asp.Net 来源:互联网
导读:我目前不满意填充DropDownListFor()对象的方式.我试图找到尽可能填充IEnumerable的通用方法.这就是我到目前为止所拥有的. 帮手: public static ListSelectListItem ToSelectList(IDictionarystring,string dictionaryItems, string selectedValue, string no
|
我目前不满意填充DropDownListFor()对象的方式.我试图找到尽可能填充IEnumerable的通用方法.这就是我到目前为止所拥有的. 帮手: public static List<SelectListItem> ToSelectList(IDictionary<string,string> dictionaryItems,string selectedValue,string noSelection,bool search = false)
{
List<SelectListItem> items = new List<SelectListItem>();
if (search)
{
items.Add(new SelectListItem { Selected = true,Value = "-1",Text = string.Format("-- {0} --",noSelection) });
}
foreach (var item in dictionaryItems)
{
items.Add(new SelectListItem
{
Text = item.Key,Value = item.Value,Selected = selectedValue == item.Value ? true : false
});
}
return items
.OrderBy(l => l.Text)
.ToList();
}
控制器: [HttpGet]
public ActionResult Index()
{
var model = new CreateModel();
var parentOrganisations = _orgs.FindBy(o => o.OwningOrganisationID == Globals.OrganisationID || o.ID == Globals.OrganisationID)
.OrderBy(o => o.OrganisationName);
Dictionary<string,string> items = new Dictionary<string,string>();
foreach (var item in parentOrganisations)
{
items.Add(item.OrganisationName,item.ID.ToString());
}
model.Organisations = SelectLists.ToSelectList(items,"-1","-- None -- ",true);
return View(model);
}
视图: <div class="control-group">
<label class="control-label">Parent Organisation</label>
<div class="controls">
@Html.DropDownListFor(m => m.ParentOrganisationID,Model.Organisations,new { @class = "input-xlarge"})
<p class="help-block">Select a parent organisation to create a branch</p>
</div>
</div>
控制器中似乎有很多重复的代码.它需要一个通用列表,将值和文本添加到字典中,然后将其用作帮助程序的输入,该帮助程序构建选择列表以作为模型的一部分发送. 有没有人有更好的方法来实现这一目标?我讨厌在我的控制器中臃肿,当我在表单上得到几个下拉时,这正是在这个实例中会发生的事情. 谢谢, 编辑 – 感谢Kenneth的帮助方法,我现在将整个事情整合到控制器中的一个调用中: model.Organisations = _orgs.FindBy(o => o.OwningOrganisationID == Globals.OrganisationID || o.ID == Globals.OrganisationID)
.OrderBy(o => o.OrganisationName)
.ToList()
.ToSelectList(org => org.OrganisationName,org => org.ID.ToString(),"None",true);
解决方法您可以提供获取密钥和值的回调,然后使用它们.除此之外,您可以将其创建为扩展方法:扩展方法: public static List<SelectListItem> ToSelectList<T>(this List<T> Items,Func<T,string> getKey,string> getValue,noSelection) });
}
foreach (var item in Items)
{
items.Add(new SelectListItem
{
Text = getKey(item),Value = getValue(item),Selected = selectedValue == getValue(item) ? true : false
});
}
return items
.OrderBy(l => l.Text)
.ToList();
}
用法: List<Org>() parentOrganisations = // fetch here model.Organisations = parentOrganisations.ToSelectList(org => org.ID.ToString(),org => org.OrganisationName,true); 注意:我在SO编辑器中键入了这个,因此您可能会遇到一些语法错误(尽管它们应该很容易解决). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 为什么不能通过IIS7中的web.config删除“服务器
- asp.net – 将ViewModel从演示文稿传递到服务 – 是否可以?
- asp.net-mvc-2 – 在名称中使用连字符处理MVC2变量
- 如何从ASP.NET中的soap异常中提取内部异常?
- asp.net – 有没有办法每天在.Net Web应用程序中运行一个进
- asp.net – 在HTTP POST IIS ASP .NET上出现HTTP 405错误
- asp.net-mvc – Azure服务总线队列触发器功能在运行一段时间
- asp.net – 如何从日历控件中获取所选日期?
- asp.net-mvc-3 – 使用Html.EditorFor为新记录创建空白
- asp.net-mvc – 构建为单个ASP.NET MVC应用程序的多个ASP.N
推荐文章
站长推荐
- asp.net-mvc-3 – ViewBag在Extension Class中返
- asp.net – IIS 7.5几分钟后,Localhost停止解析
- asp.net-mvc-2 – 动态生成的模型中的ASP.NET MV
- asp.net – RegularExpressionValidator VS Ajax
- asp.net-mvc – MVC4脚手架添加控制器给出错误“
- asp.net-mvc – 在ASP.NET MVC中创建控件外的Vie
- ASP.net Web窗体,在编译时获取aspx /视图错误?
- asp.net 2.0中利用Ajax2.0实现JSON传送大量页面数
- asp.net – 使用Typescript时Visual Studio 2015
- asp.net – 将AJAX ModalPopupExtender定位在屏幕
热点阅读
