asp.net mvc将css添加到editorfor?

时间:2010-08-05 20:12:55

标签: html asp.net-mvc

我想从MVC更改'editor for'文本框的样式,特别是我想让文本框更大。

我尝试过几种方式添加CSS,但无济于事。

包括:

<td class="myCss"><%=Html.EditorFor(x => x.NickName)%></td>

<td class="myCss"><%=Html.EditorFor(x => x.NickName, new { @class = "myCss" })%></td>

帮忙!

6 个答案:

答案 0 :(得分:8)

robh,

很难从您的问题中了解您是否在项目中寻找“通用”或特定解决方案。因此,我将解决通用 - 工作一次,适用于所有解决方案。

这需要采取一些步骤(约定优于配置)。基本上这就是所需要的:

  • 创建新文件夹 'views-&gt;共享名为编辑器模板'
  • 创建一个新的usercotrol(ascx)文件 在那个名为'string.ascx'
  • 之下

现在,按照:

定义ascx文件
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<div class="editor-label">
    <%= Html.LabelFor(model => model) %>
</div>
<div class="new-editor-field">
    <%= Html.TextBoxFor(model => model) %>
    <%= Html.ValidationMessageFor(model => model) %>
</div>

这将使所有基于'string'的EditorFor()调用使用此'模板'。只需让“new-editor-field”类反映出该字段所需的css样式即可。显然,按照你自己的要求做饭(即你可能不想要LabelFor tat等......)

希望这会有所帮助 - 我必须说,这只是其中一种方法之一(但这是我最喜欢的方式)。

享受

jim

答案 1 :(得分:3)

您可以使用以下内容,而不是要求输入字段直接应用该类:

<div class="editor-field myCss">
    @Html.EditorFor(model => model.Nickname)
</div>

其结果大致如下HTML

<div class="editor-field myCss">
    <input class="text-box single-line" data-val="true" id="Nickname" name="Nickname" type="text" value="">
</div>

然后只使用CSS规则进行适当的样式

.myCss input.text-box {font-size: 2em;}

答案 2 :(得分:2)

试试这个

<%= Html.TextBoxFor(x => x.NickName, new { @class = "myCss" })%>

<%= Html.TextAreaFor(x => x.NickName, new { cols = "40%", @class = "myCss" })%>

现在您可以定义属性,因为MVC知道要使用的类型(TextArea)。

答案 3 :(得分:0)

将EditorFor的结果放在一个带有一些类属性的div中,并在此类的内部样式定义中,使用!important指令强制接受所需的值到该div内的任何内容。

答案 4 :(得分:0)

试试这个,

https://stackoverflow.com/a/4249988/505474

从上面链接复制,

@model DateTime?

@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" })

对我有用......

答案 5 :(得分:0)

尝试一下

@Html.EditorFor(p => p.Name, new { htmlAttributes = new{ @class ="my-css-class"} })