我无法在辅助方法中调整 html.EditorFor 框的宽度
I can't adjust the width of my html.EditorFor box within the helper method
VS2013、MVC5、剃刀,VB
我对 CSS 文件还不是很熟练,所以也许这是我学习的机会,但我也认为我应该能够在 html.EditorFor 命令中添加一些东西来使显示框变宽。
这是我在脚手架上的原始代码:
@Html.EditorFor(Function(model) model.Body, New With { .htmlAttributes = New With { .class = "form-control" } })
当我如下添加 .rows 时(我有 "DataType(DataType.MultilineText)" 装饰 class 属性 'Body'):
@Html.EditorFor(Function(model) model.Body, New With {.htmlAttributes = New With {.class = "form-control", .rows = "20"}})
这很有效,可以轻松地为我提供更多行。但是添加 .cols 似乎不起作用:
@Html.EditorFor(Function(model) model.Body, New With {.htmlAttributes = New With {.class = "form-control", .rows = "20", .cols = "80"}})
事实上,即使我设置 .cols = "10",我也看不到视图有任何变化。我在浏览器中检查了源代码,并且存在 cols 属性。我改成 html.TextBoxFor 来玩,发现我可以把盒子的宽度调小一些,但是我不能超过最大宽度。我不喜欢使用 .TextBoxFor,因为它显示效果不如原来的好。
由于 MVC 模板广泛使用 bootstrap CSS 文件,我有点不愿意对它们做太多,但也许一些答案会指导我制作安全地或根据最佳实践进行此类更改。
我也有一个问题,为什么我不能在html.EditorFor命令中进行局部样式更改。我以为原则是越靠近显示的元素,CSS的优先级就越高。
添加了 Chris Pratt 的回复: 所以这是由脚手架创建的标准 Razor 代码。我只包含了我的观点的一个元素。我看到了改变元素内部的 class 是如何产生影响的,但我最终改变了 Label 元素以及 .EditorFor 元素,另外,我从来没有让 .EditorFor 元素变得更宽。
@Using (Html.BeginForm())
@Html.AntiForgeryToken()
@Html.Hidden("ChannelItemID", ViewData("ChannelItemID"))
@<div class="form-horizontal">
<hr />
<div class="form-group">
@Html.LabelFor(Function(model) model.UserPost.Title, htmlAttributes:=New With {.class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(Function(model) model.UserPost.Title, New With {.htmlAttributes = New With {.class = "form-control"}})
@Html.ValidationMessageFor(Function(model) model.UserPost.Title, "", New With {.class = "text-danger"})
</div>
</div>
我想知道您是否可以提供我应该更改的内容以获得 100% 的宽度,同时仍然正确使用 Bootstrap。
两件事。首先,如果没有设置明确的宽度,cols
只会影响文本区域的宽度。默认 Site.css 文件确实在输入、文本区域和选择上设置了最大宽度:
/* Set width on the form input elements since they're 100% wide by default */
input,
select,
textarea {
max-width: 280px;
}
因此,无论添加多少列,textarea 都不会超过 280px。
其次,如果您打算使用 Bootstrap,那么这无论如何都不是您控制宽度的方式。您的输入应该被赋予 class form-control
,这实际上会使它们扩展到 100% 宽度。然后,您可以通过将它们包装在 classes bootstrap 提供的响应网格中来限制这一点。例如:
<div class="col-md-4">
<textarea class="form-control"></textarea>
</div>
VS2013、MVC5、剃刀,VB
我对 CSS 文件还不是很熟练,所以也许这是我学习的机会,但我也认为我应该能够在 html.EditorFor 命令中添加一些东西来使显示框变宽。
这是我在脚手架上的原始代码:
@Html.EditorFor(Function(model) model.Body, New With { .htmlAttributes = New With { .class = "form-control" } })
当我如下添加 .rows 时(我有 "DataType(DataType.MultilineText)" 装饰 class 属性 'Body'):
@Html.EditorFor(Function(model) model.Body, New With {.htmlAttributes = New With {.class = "form-control", .rows = "20"}})
这很有效,可以轻松地为我提供更多行。但是添加 .cols 似乎不起作用:
@Html.EditorFor(Function(model) model.Body, New With {.htmlAttributes = New With {.class = "form-control", .rows = "20", .cols = "80"}})
事实上,即使我设置 .cols = "10",我也看不到视图有任何变化。我在浏览器中检查了源代码,并且存在 cols 属性。我改成 html.TextBoxFor 来玩,发现我可以把盒子的宽度调小一些,但是我不能超过最大宽度。我不喜欢使用 .TextBoxFor,因为它显示效果不如原来的好。
由于 MVC 模板广泛使用 bootstrap CSS 文件,我有点不愿意对它们做太多,但也许一些答案会指导我制作安全地或根据最佳实践进行此类更改。
我也有一个问题,为什么我不能在html.EditorFor命令中进行局部样式更改。我以为原则是越靠近显示的元素,CSS的优先级就越高。
添加了 Chris Pratt 的回复: 所以这是由脚手架创建的标准 Razor 代码。我只包含了我的观点的一个元素。我看到了改变元素内部的 class 是如何产生影响的,但我最终改变了 Label 元素以及 .EditorFor 元素,另外,我从来没有让 .EditorFor 元素变得更宽。
@Using (Html.BeginForm())
@Html.AntiForgeryToken()
@Html.Hidden("ChannelItemID", ViewData("ChannelItemID"))
@<div class="form-horizontal">
<hr />
<div class="form-group">
@Html.LabelFor(Function(model) model.UserPost.Title, htmlAttributes:=New With {.class = "control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(Function(model) model.UserPost.Title, New With {.htmlAttributes = New With {.class = "form-control"}})
@Html.ValidationMessageFor(Function(model) model.UserPost.Title, "", New With {.class = "text-danger"})
</div>
</div>
我想知道您是否可以提供我应该更改的内容以获得 100% 的宽度,同时仍然正确使用 Bootstrap。
两件事。首先,如果没有设置明确的宽度,cols
只会影响文本区域的宽度。默认 Site.css 文件确实在输入、文本区域和选择上设置了最大宽度:
/* Set width on the form input elements since they're 100% wide by default */
input,
select,
textarea {
max-width: 280px;
}
因此,无论添加多少列,textarea 都不会超过 280px。
其次,如果您打算使用 Bootstrap,那么这无论如何都不是您控制宽度的方式。您的输入应该被赋予 class form-control
,这实际上会使它们扩展到 100% 宽度。然后,您可以通过将它们包装在 classes bootstrap 提供的响应网格中来限制这一点。例如:
<div class="col-md-4">
<textarea class="form-control"></textarea>
</div>