如何将 HTMLAttributes 传播到自定义 EditorTemplate?

Dan*_*tos 4 c# asp.net-mvc mvc-editor-templates razor

我为这样的货币浮动格式创建了一个编辑器模板。

@using System.Globalization
@{
    var ri = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID);
}

<div class="input-group ">
    <div class="input-group-addon">@ri.CurrencySymbol</div>
    @Html.TextBox("", ViewData.ModelMetadata.Model, new { @class = " form-control text-box single-line" })
</div>
Run Code Online (Sandbox Code Playgroud)

显示带有货币符号的引导输入组

在此输入图像描述

它工作正常,但我试图传递一些额外的类,如“text-danger”或“input-group-lg”,但这些参数不会传递到编辑器模板。

@Html.EditorFor(model => model.money, new { htmlAttributes = new { @class = "text-danger input-lg form-group-lg" } })
Run Code Online (Sandbox Code Playgroud)

类“text-danger input-lg form-group-lg”未设置为主 div。

如何将这些类传播到我的编辑器模板?

Dan*_*tos 7

只需使用路由 ViewData["htmlAttributes"] 到字典并获取“class”值

@{
    var htmlAttrib = ViewData["htmlAttributes"]
    IDictionary<string, object> dic = new RouteValueDictionary(htmlAttrib);
    var classes = dic ["class"];
}

<div class="@classes" > your control .... </div> 
Run Code Online (Sandbox Code Playgroud)