asp.net – DropDownList的EditorTemplate
发布时间:2020-12-16 04:25:53 所属栏目:asp.Net 来源:网络整理
导读:我为字符串字段创建了一个EditorTemplate,它实现了bootstrap,如下所示: @using MyProject@model objectdiv class="form-group" @Html.LabelFor(m = m,new { @class = "col-md-3 control-label" }) div class="col-md-9" @Html.TextBox( "",ViewData.Templat
我为字符串字段创建了一个EditorTemplate,它实现了bootstrap,如下所示:
@using MyProject @model object <div class="form-group"> @Html.LabelFor(m => m,new { @class = "col-md-3 control-label" }) <div class="col-md-9"> @Html.TextBox( "",ViewData.TemplateInfo.FormattedModelValue,htmlAttributes) @Html.ValidationMessageFor(m => m,null,new { @class = "help-block" }) </div> </div> 我可以这样简单地称之为: @Html.EditorFor(model => model.FirstName,"BootstrapString") 我的问题: @Html.EditorFor(model => model.CategoryId,new SelectList(ViewBag.Categories,"ID","CategoryName")) 所以它基本上是一个带有Twitter Bootstrap样式的Generic DropDownList. 解决方法
选项1
创建一个名为BootstrapSelect.cshtml的EditorTemplate @model object <div class="form-group"> @Html.LabelFor(m => m,new { @class = "col-md-3 control-label" }) <div class="col-md-9"> @Html.DropDownListFor(m => m,(SelectList)ViewBag.Items,new { @class = "form-control"}) @Html.ValidationMessageFor(m => m,new { @class = "help-block" }) </div> </div> 并在视图中 @Html.EditorFor(m => m.CategoryId,"BootstrapSelect") 但这意味着你总是需要在控制器中分配`ViewBag.Items var categories = // get collection from somewhere ViewBag.Items = new SelectList(categories,"CategoryName"); 选项2 修改EditorTemplate以接受其他ViewData @model object <div class="form-group"> @Html.LabelFor(m => m,(SelectList)ViewData["selectList"],new { @class = "help-block" }) </div> </div> 并在视图中传递additionalViewData参数中的SelectList @Html.EditorFor(m => m.CategoryId,"BootstrapSelect",new { selectList = new SelectList(ViewBag.Categories,"CategoryName") }) 这是更好的,因为您不需要依赖ViewBag.例如,如果您有一个带有属性的视图模型public SelectList CategoryItems {get;组;然后你可以使用 @Html.EditorFor(m => m.CategoryId,Model.CategoryItems) 选项3 使用内置的帮助器方法创建自己的帮助器 using System; using System.Linq.Expressions; using System.Text; using System.Web.Mvc; using System.Web.Mvc.Html; namespace YourAssembly.Html { public static class BootstrapHelper { public static MvcHtmlString BootstrapDropDownFor<TModel,TValue>(this HtmlHelper<TModel> helper,Expression<Func<TModel,TValue>> expression,SelectList selectList) { MvcHtmlString label = LabelExtensions.LabelFor(helper,expression,new { @class = "col-md-3 control-label" }); MvcHtmlString select = SelectExtensions.DropDownListFor(helper,selectList,new { @class = "form-control" }); MvcHtmlString validation = ValidationExtensions.ValidationMessageFor(helper,new { @class = "help-block" }); StringBuilder innerHtml = new StringBuilder(); innerHtml.Append(select); innerHtml.Append(validation); TagBuilder innerDiv = new TagBuilder("div"); innerDiv.AddCssClass("col-md-9"); innerDiv.InnerHtml = innerHtml.ToString(); StringBuilder outerHtml = new StringBuilder(); outerHtml.Append(label); outerHtml.Append(innerDiv.ToString()); TagBuilder outerDiv = new TagBuilder("div"); outerDiv.AddCssClass("form-group"); outerDiv.InnerHtml = outerHtml.ToString(); return MvcHtmlString.Create(outerDiv.ToString()); } } } 并在视图中 @Html.BootstrapDropDownFor(m => m.CategoryId,"CategoryName")) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ASP.NET MVC4异步聊天室的示例代码
- asp.net – Visual Studio 2015的项目模板
- asp.net-mvc – 单元测试Url.Action(使用Rhino Mocks?)
- .net – 按enter按钮的同时选择按钮
- asp.net core mvc Area区域跳转
- asp.net-mvc – Asp.net 5(vnext)是否可以使用?
- ASP.NET OOP-关联操作符重载的操作_RelationalOperatorOver
- asp.net-mvc-3 – MVC中的SSO(单点登录)
- asp.net中的身份验证Cookie
- IIS 8发布ASP.NET核心应用程序 – 正在使用的文件
推荐文章
站长推荐
- asp.net-mvc – 发生异常后不要刷新会话 – NHib
- entity-framework – 术语’scaffold-dbcontext’
- asp.net – Web发布的密码不同于我的Azure管理员
- asp.net – CSS更改不反映在网站上
- ASP.NET Core中的ActionFilter与DI
- asp.net-mvc – ASP.NET MVC母版页
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ex
- asp.net-mvc – 如何识别ASP.NET MVC网站?
- 数组 – 如何在vbscript中实现具有可变大小的数组
- .net core 中间件使用
热点阅读