在@html.textbox中使用标签 - ASP.NET RAZOR

时间:2014-03-11 12:31:24

标签: asp.net-mvc razor textbox label

我有@html.textBox,我想知道我是否可以在内部定义Label,而不是使用单独的@html.label代码...

非常感谢

文本框

{{H2}}

标签

  @Html.TextBox("Input_AvailableMark_Element", null, new { id = @item.ElementID + "_AM", @class = "ElementAvailableMarks k-grid-input k-textbox_3" })

2 个答案:

答案 0 :(得分:2)

我能想到的唯一方法就是使用占位符属性:

@Html.TextBoxFor(model => model.SomeProperty, new { placeholder = Model.SomeProperty })

我假设您正在为模型使用DataAnnotations。因此,例如,如果您希望Display属性值位于占位符中,那么您需要编写此扩展方法来获取数据注释DISPLAY属性:

public static class GetAttributeExtension
{
    public static string GetDisplayName<TModel, TValue>(this TModel model, Expression<Func<TModel, TValue>> expression)
    {
        return GetDisplayName(expression);
    }

    public static string GetDisplayName<TModel, TValue>(Expression<Func<TModel, TValue>> expression)
    {
        var propertyName = ((MemberExpression)expression.Body).Member.Name;
        return typeof(TModel).GetAttribute<DisplayAttribute>(propertyName).Name;
    }
}

然后你可以这样做:

@Html.TextBoxFor(model => model.SomeProperty, new { placeholder = Model.GetDisplayName(m => m.SomeProperty) })

答案 1 :(得分:1)

根据您需要支持的浏览器,最简单的选项是@Marko建议,添加占位符属性。 http://www.w3schools.com/tags/att_input_placeholder.asp

但是,如果您需要支持非HTML5兼容的浏览器,则无法使用。有一些javascript库会为你做这种行为 http://www.wduffy.co.uk/jLabel/

之前我使用过jLabel并且效果很好,但并非没有问题。