如何从 mvc3 模型设置文本框宽度,假设我的模型如下,
public class MVCMODEL
{
[Required]
public int Name{ get; set; }
}
我希望当这个文本框在视图中呈现时,它的宽度将800px
如何在模型中添加自定义样式?
谢谢 ,
如何从 mvc3 模型设置文本框宽度,假设我的模型如下,
public class MVCMODEL
{
[Required]
public int Name{ get; set; }
}
我希望当这个文本框在视图中呈现时,它的宽度将800px
如何在模型中添加自定义样式?
谢谢 ,
你不能从模型中做到这一点。在 MVC 中,模型是数据结构的表示,它对应于您向页面发送和从页面发送的信息。MVC 的关键是将站点的美学与实际使其运行的逻辑分开。为了设置视图的视觉方面,您需要更改视图的 CSS。
您不能这样做,因为它是一种特定的布局行为,因此您应该根据width
需要在 View 上设置。这样的事情可以解决你的问题:
@Html.TextBoxFor(model => model.Name, new { style = "width: 800px;"})
尽管您可以添加自己的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
同意所有其他答案...您还可以将模型中字段的最大长度定义为:
public class MVCMODEL
{
[Required]
[MaxLenght(300)] // number of characters allowed in this field.
public int Name{ get; set; }
}
你可以写这样的东西。
:<%=Html.TextBoxFor(m => m.Name, new { size=4})%>