是否可以为已经使用了另一个htmlherlper的部分制作HtmlHelper。
像这种情况一样: <div class="control-group">
@Html.LabelFor(model => model.cLinks.Link2Privates)
<div class="controls">
@Html.TextBoxFor(model => model.cLinks.Link2Privates, new { @class = " span7"})
@Html.ValidationMessageFor(model => model.cLinks.Link2Privates)
</div>
</div>
答案 0 :(得分:0)
我假设你只是想要一个能为你生成所有这些信息的助手。虽然技术上可以创建一个自定义帮助程序,但实际上最好使用编辑器模板:
<强>视图\共享\ EditorTemplates \ BootstrapControlGroup.cshtml 强>
<div class="control-group">
@Html.Label("")
<div class="controls">
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = " span7"})
@Html.ValidationMessage("")
</div>
</div>
<强>表格强>
@Html.EditorFor(m => m.cLinks.Link2Privates, "BootstrapControlGroup")
这基本上就是说使用这个模板来渲染这个属性的“编辑器”。如果您不想指定模板名称,还有其他方法。您可以使用UIHint
属性
[UIHint("BoostrapControlGroup")]
public string Link2Privates { get; set; }
或者您可以依赖特定的C#类型或DataType
。例如,如果您希望以这种方式处理所有string
,则可以将该模板命名为String.cshtml
,然后执行:
@Html.EditorFor(m => m.cLinks.Link2Privates)
Razor会看到它是string
并自动使用String.cshtml
编辑器模板(如果存在)。您还可以使用DataType
属性,例如:
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
然后,创建一个Views\Shared\EditorTemplates\EmailAddress.cshtml
模板。只要您为此属性调用Html.EditorFor
,Razor就会使用此模板。
答案 1 :(得分:0)
我创建了一个适用于Twitter Bootstrap场景的HtmlHelper扩展库。
Twitter Bootstrap Form Groups甚至还有一个HtmlHelper插件:
https://www.nuget.org/packages/Build.Mvc.TwitterBootstrap
@using ( Html.BuildForm().Begin(FormRenderStyle.Horizontal) )
{
Html.UpdateFormBuilderContext(ctx =>
{
ctx.RenderValidationMessages = true;
});
<fieldset>
<legend>User Information</legend>
@Html.BuildTextBoxGroupFor(m => m.FirstName, b=> b.TextBox(t=> t.Autofocus()))
@Html.BuildTextBoxGroupFor(m => m.Nickname)
@Html.BuildTextBoxGroupFor(m => m.LastName)
</fieldset>
}
注意:图书馆希望您使用TwitterBootstrap&gt; V3。上面的例子有2.3.2版的类名。