关于Html.Editor助手(MVC3)的简单Razor问题

时间:2011-07-26 10:54:26

标签: asp.net-mvc-3 razor html-helper editorfor

基本上,我有一个包含多个这样的编辑器的表:

<table>
<tr>
<td>@Html.EditorFor(x => x.Random1)</td>
<td>@Html.EditorFor(x => x.Random2)</td>
</tr>
<tr>
<td colspan="2">@Html.EditorFor(x=> x.Random3)</td>
</tr>
</table>

现在,我的问题是,正如您可能已经从colspan =“2”中发现的那样,我希望我的第三个文本框一直延伸到两列。在普通的HTML中,自然只会添加一个width属性。是否有像DataType.MultilineText这样的DataAnnotation可以改变编辑器的宽度?还有其他想法吗?

更新:如果我将其更改为TextBoxFor而不是EditorFor,我实际上可以添加@Html.TextBoxFor(x => x.Random, new { style = "width: 500px;" })
唯一的问题是,我有另一个文本框(让我们说random4),它以某种方式覆盖我的DataAnnotation MultilineText并使其成为一个普通的500px文本框。猜猜不得不深入了解CSS :(

3 个答案:

答案 0 :(得分:1)

您可能会发现this question的一些答案很有用。

关于模板的好处是,如果你不喜欢它们的工作方式,你可以简单地插入你自己的实现。

您还可以尝试使用CSS根据控件的ID来指定控件的宽度。

答案 1 :(得分:0)

最简单的解决方案是在css中设置控件的样式。对于random3文本框,使用input[type="text"]{width:1px}和random4 multilinetext,使用textarea{width:1px}

答案 2 :(得分:-1)

在模型的属性中 - 在这种情况下,Random3给它一个注释

public class ViewModelName
{
    [DataType(DataType.MultilineText)]
    public string Random3 { get; set; }
}

然后当你可以使用Html.EditorFor(x =&gt; x.Random3)时,它会知道它需要是多行的