Порядок вкладок в помощниках ASP.NET MVC 3 - PullRequest
12 голосов
/ 13 июля 2011

Как я могу использовать свойство Tab Order для следующего кода:

<td>
    @Html.EditorFor(model => model.Cost)                
</td>

Я пробовал это:

<td tabindex=1>
    @Html.EditorFor(model => model.Cost)                
</td>

любые предложения?

Ответы [ 5 ]

14 голосов
/ 29 сентября 2011

Вы также можете указать тот же атрибут html в самом помощнике, как показано ниже.

@Html.TextBoxFor(model => model.Cost, new { tabindex = 1 })
11 голосов
/ 14 февраля 2012

В отличие от правильного ответа @ Stuy1974, если вы не хотите выходить из решения EditorFor, вам придется подключить свой собственный шаблон редактора .

@ModelType SomeApp.ViewModels.SomeNiftyViewModel 

// be sure to include the TabIndex info in the ViewModel
@Html.TextBoxFor(model => model.Cost, new { tabindex = model.TabIndex })

Вы также можете использовать параметр ViewData, уже переданный непосредственно в шаблон редактора, вместо добавления индекса вкладки в модель:

// In the main view
@Html.EditorFor(model => model.Cost, new { TabIndex = 3 })

// In the editor template
@{ int tabIndex = (ViewData["TabIndex"] as int?) ?? 0; }
@Html.TextBoxFor(model => model, new { tabindex = tabIndex })
1 голос
/ 22 октября 2015

Другим вариантом, позволяющим сохранить EditorFor, является установка индекса вкладки в javascript после загрузки страницы с чем-то вроде:

var myEditorFor = document.getElementById("MyEditorForId");

if (myEditorFor != null) {
    myEditorFor.setAttribute("tabindex","18")
}
1 голос
/ 29 июля 2014

Просто сделай это

@Html.EditorFor(model => model.Cost,  new { htmlAttributes = new { tabindex = 34 } })
0 голосов
/ 14 февраля 2012

К сожалению, метод @ Html.EditorFor не позволяет добавлять атрибуты HTML. Вы можете добавить их через более конкретный вызов метода. В приведенном выше случае я бы использовал -

@Html.TextBoxFor(model => model.Cost, new { tabindex = 1 })

...