2011-01-18 2 views
19

Можно ли задать ширину редактора для управления в моем представлении?MVC и EditorFor width

Я установил несколько параметров:

 [Required, DisplayName("Payee Name"), StringLength(50)] 
    public string Name { get; set; } 

Однако, я не могу показаться, чтобы установить ширину текстового поля, который визуализируется.

<table width="300" border="0" cellpadding="3" cellspacing="0"> 
    <tr> 
     <td> 
      <%=Html.LabelFor(m => m.Name)%> 
     </td> 
     <td> 
      <%=Html.EditorFor(m => m.Name)%> 
     </td> 
    </tr> 

Это можно сделать как-то?

Я пробовал:

<%=Html.EditorFor(m => m.Name, new {width=50)%> 

Но нет радости ...

ответ

30

Вместо EditorFor используйте TextBoxFor:

<%=Html.TextBoxFor(m => m.Name, new {style = "width:50px"})%> 
18

Что случилось с использованием CSS, чтобы стиль вашей ширины управления?

+0

Звучит неплохо - но, как? Я хотел бы иметь его как CSS, чтобы иметь общие настройки для моих элементов управления. – Craig

+1

@cdotlister - Попробуйте следующее: '<% = Html.EditorFor (m => m.Name, new {@class =" myCss "})%>', тогда в вашем .css-файле есть 'input.myCss {width: 50em ;} ' –

+1

Я сделал это, но элемент управления выглядит следующим образом: Craig

2

Вы можете добавить в атрибут CSS, чтобы убедиться, что он перекрывает значение по умолчанию для TextBoxFor, например, «важно!» ширина: 50px! important;

0

Если вам нужна пользовательская ширина за пределами нормального правила CSS, и вы используете редактор шаблоны вы можете сделать

<%=Html.EditorFor(m => m.Name, new { Width = 50})%> 

Затем в шаблоне редактора для строк добавьте в ваш шаблон

@Html.TextBox(s => { 
... 
    if (ViewBag.Width != null) 
    { 
     s.Width = ViewBag.Width; 
    } 
}).Bind(Model).GetHtml() 
8

В mvc 5 есть настройка в site.css, которая устанавливает max-width = 200 для всех текстовых областей. Это смутило меня, пока я не нашел этот блог-блог. http://weblogs.asp.net/paullitwin/visual-studio-2013-asp-net-mvc-5-scaffolded-controls-and-bootstrap как Пол Litwin выразился:

Да, Microsoft по какой-либо причине, задающего максимальную ширину всех ввода, выбора и управления 280 текстовой области пикселей. Не уверен в мотивации , но до тех пор, пока вы не измените это значение или не переопределите это значение , назначив элементы управления формой другому классу CSS, ваши элементы управления никогда не смогут быть более широкими, чем 280 пикселей.

/* Set width on the form input elements since they're 100% wide by default */ 
input, 
select, 
textarea { 
    max-width: 280px; 
} 

Таким образом, вы, если вы прагматичный изменить максимальную ширину, чтобы, например, 600px

+0

Я искал «ограничение 280 пикселей на текстовые поля» и подобные вещи для MVC и не мог найти много, пока не нашел этот похороненный комментарий. Это было невероятно расстраивающим, чтобы найти его здесь :(Спасибо за правильное направление, повышение этого максимального предела позволило мне на самом деле создать мой сайт :) –

1

С Bootstrap 3

@Html.EditorFor(model => model.PriceIndicatorDesc, new { htmlAttributes = new { @class = "form-control", @style = "width:280px" } }) 
-1

Над ответом Да и Нет. Мы должны использовать разработки инструмент для проверки того, какие стили используются и модифицируют их, они могут иметь максимальную ширину, ширину; Затем создайте собственный! Важный css, чтобы применить его, мой случай:

<style> 
    textarea, 
    input[type='text'], 
    .form-group, 
    .form-group-lg, 
    .form-horizontal, 
    .form-control,  
    .text-box, 
    .single-line, 
    .multi-line{ 
     width: 800px !important; 
     max-width: 1000px !important; 
    } 
    .multi-line{ 
     height: 300px !important; 
    } 
    .form-horizontal{ 
     position:absolute; 
     padding-left:15%; 
    } 
</style> 

см. Прилагается изображение результат.

enter image description here

4

Заменить <%=Html.EditorFor(m => m.Name, new {width=50)%> для этого

<%=Html.EditorFor(m => m.Name,new { htmlAttributes = new { style = "width: 50px" }, } 
0

Patrik Линдстрем правильно с Max-шириной.

я смог обойти эту проблему, установив максимальную ширину и ширину

@Html.EditorFor(model => model.Source, new { htmlAttributes = new { @class = "form-control", @placeholder = "Source", @style = "width: 900px;max-width: 900px;" } }) 
2

Как упоминалось ранее, место, куда вы хотите идти в site.css

input, 
select, 
textarea { 
    max-width: 280px; 
} 

Вы можете установите любое значение по умолчанию, которое вы хотите там, или удалите блок, чтобы получить значение Bootstrap 100%. Лично я добавил следующие варианты, чтобы я мог легко внести некоторые изменения на основании данного поля управления:

.form-control-25 { 
    max-width: 25%; 
} 

.form-control-50 { 
    max-width: 50%; 
} 

.form-control-75 { 
    max-width: 75%; 
} 

.form-control-100 { 
    max-width: 100%; 
} 
Смежные вопросы