使用Html.EditorFor生成指定行数和列数的文本域

9

我知道你可以使用EditorFor html助手中的DataType属性来指定模型实体的特定属性应显示为多行输入字段。

如果我想指定文本区域必须具有的行数和列数怎么办?

在模型中:


```csharp [DataType(DataType.MultilineText)] public string MyProperty { get; set; } ```

您可以在模型中使用MultilineText数据类型,然后在视图中使用TextAreaFor html助手。例如:

```csharp @Html.TextAreaFor(m => m.MyProperty, new { rows = 4, cols = 40 }) ```
[DataType(DataType.MultilineText)]
public string HTMLText { get; set; }

在视图中:

@Html.EditorFor(x => x.HTMLText)

期望的结果:

<textarea id="HTMLText" rows="10" cols="40">value</textarea>

有没有一种方法可以在不使用@Html.Textarea()助手的情况下生成这种代码?
3个回答

8

不确定如何设置行和列,但是您可以使用.multi-line类更改这些文本区域的CSS。当使用EditorFor时,此类会添加到文本区域中,因此您可以在该类中指定宽度和高度以获取所需的尺寸。

.multi-line { height:5em; width:5em; }

使用这种技术意味着我必须在视图中指定一个类。我正在寻找一种直接从模型控制它的方法。 - Jason
@Jason - 如果您使用页面级别的CSS,则只需在视图中指定即可。如果将其放入外部样式表中,则不会出现在视图中。我知道这并没有完全回答您的问题,但只是让您知道这是一个选项。 - amurra
@Lmrini Frozen的回答是更好的方法,而不是添加CSS类,您可以使用Razor生成所需的属性。 - Bjego

3
你可以在Razor/c#中指定行和列的大小和字符等级,例如:

size="10" char="5"

@Html.TextAreaFor(model => model.Longtext, new { htmlAttributes = new { @class = "ctrl-col2 ctrl-col1", @row = "4", @col = "30" } })

0

当您使用DataType.MultilineText字段和@Html.EditorFor时,似乎在MVC 5上不再需要此功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接