0

如何从 mvc3 模型设置文本框宽度,假设我的模型如下,

public class MVCMODEL
{
    [Required] 
    public  int Name{ get; set; }
}

我希望当这个文本框在视图中呈现时,它的宽度将800px如何在模型中添加自定义样式?

谢谢 ,

4

5 回答 5

3

你不能从模型中做到这一点。在 MVC 中,模型是数据结构的表示,它对应于您向页面发送和从页面发送的信息。MVC 的关键是将站点的美学与实际使其运行的逻辑分开。为了设置视图的视觉方面,您需要更改视图的 CSS。

于 2012-12-04T11:41:55.620 回答
1

您不能这样做,因为它是一种特定的布局行为,因此您应该根据width需要在 View 上设置。这样的事情可以解决你的问题:

@Html.TextBoxFor(model => model.Name, new { style = "width: 800px;"})
于 2012-12-04T11:44:24.700 回答
1

尽管您可以添加自己的DataAnnotation类型属性扩展并相应地装饰您的模型/视图模型属性(根据此博客文章),但这将是对 IMO 关注点的可怕污染。

更好的是使用类似的技术,而不是呈现硬编码的宽度,而是使用 CSS 类装饰您的模型属性,然后使用 CSS 相应地控制格式。然而,纯粹主义者可能仍然不同意——即使将 CSS 类应用于视图模型也可能越界。

例如

[HtmlProperties(CssClass="LargeTextBox")]
[Required] 
public  int Name{ get; set; }

认为呈现的 Html 是

<input type="text" value="" name="Name" id="Name" class="LargeTextBox"/>

实际宽度将控制在适当的范围内.css

于 2012-12-04T11:52:59.333 回答
0

同意所有其他答案...您还可以将模型中字段的最大长度定义为:

public class MVCMODEL
{
    [Required] 
    [MaxLenght(300)] // number of characters allowed in this field.
    public  int Name{ get; set; }
}
于 2012-12-04T15:18:43.537 回答
0

你可以写这样的东西。

:<%=Html.TextBoxFor(m => m.Name, new { size=4})%>

于 2012-12-08T08:27:47.140 回答