如何在mvc3模型中设置文本框的宽度

时间:2012-12-04 11:38:53

标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

如何从mvc3模型设置文本框宽度,假设我的模型正在关注,

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

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

谢谢,

5 个答案:

答案 0 :(得分:3)

您不能从模型中执行此操作。在MVC中,模型是数据结构的表示,它对应于您发送到页面和从页面发送的信息。 MVC的关键在于将网站的美学与实际运行的逻辑分开。为了设置视图的可视方面,您需要更改视图的CSS。

答案 1 :(得分:1)

您无法执行此操作,因为它是特定的布局行为,因此您应根据需要在View中设置width。这样的事情可以解决yoru问题:

@Html.TextBoxFor(model => model.Name, new { style = "width: 800px;"})

答案 2 :(得分:1)

虽然您可以添加自己的DataAnnotation类型属性扩展并相应地修饰您的模型/视图模型属性(根据this blog post),这将是IMO关注的可怕污染。

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

e.g。

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

认为渲染的Html是

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

实际宽度将在适当的.css

中控制

答案 3 :(得分:0)

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

public class MVCMODEL
{
    [Required] 
    [MaxLenght(300)] // number of characters allowed in this field.
    public  int Name{ get; set; }
}

答案 4 :(得分:0)

你可能会写这样的东西。

:&lt;%= Html.TextBoxFor(m =&gt; m.Name,new {size = 4})%&gt;