asp.net – DropDownList的EditorTemplate
发布时间:2020-05-24 11:46:34 所属栏目: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
|
我为字符串字段创建了一个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 – 有没有一个原因,cshtml不受欢迎
- asp.net-mvc-3 – 找不到视图’错误’或其主人
- asp.net – [DataType(DataType.EmailAddress)]和[EmailAdd
- asp.net – 自定义部分的Web配置转换
- 单元测试ASP.NET MVC重定向
- 冻结asp.net网格视图列
- asp.net-mvc – 使用Windows身份验证与活动目录组作为角色
- asp.net – 无法加载文件或程序集“Microsoft.Web.Extensio
- asp.net-mvc – 如何在运行时之前编译cshtml
- asp.net – 在我的网站中添加HttpModule时出现“500内部服务
推荐文章
站长推荐
- 如何在ASP.NET中使用列表集合作为Repeater数据源
- asp.net – Amazon SES停止工作
- asp.net – 构建动态LINQ查询的最佳方法
- asp.net – “填充无效,不能删除”异常WebResour
- 在IIS 7.5上运行的ASP.NET应用程序上强制Https
- asp.net-mvc-4 – 如何在视图页面上缩小脚本块内
- asp.net – 连接字符串最佳实践
- asp.net – DropDownList OnSelectedIndexChange
- asp.net – 这个LINQ statment是否容易受SQL注入
- ASP.NET Ajax客户端框架无法加载.将ScriptManage
热点阅读
