我有@html.textBox
,我想知道我是否可以在内部定义Label,而不是使用单独的@html.label
代码...
@Html.TextBox("Input_AvailableMark_Element", null, new { id = @item.ElementID + "_AM", @class = "ElementAvailableMarks k-grid-input k-textbox_3" })
答案 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并且效果很好,但并非没有问题。