如何将Tab Order属性用于以下代码:
<td>
@Html.EditorFor(model => model.Cost)
</td>
我试过了:
<td tabindex=1>
@Html.EditorFor(model => model.Cost)
</td>
有什么建议吗?
答案 0 :(得分:14)
您还可以在帮助程序本身中指定相同的html属性,如下所示。
@Html.TextBoxFor(model => model.Cost, new { tabindex = 1 })
答案 1 :(得分:11)
与@ Stuy1974的正确答案形成鲜明对比的是,如果您不想退出EditorFor
解决方案,那么您将不得不连接自己的Editor Template。
@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 })
答案 2 :(得分:1)
只需这样做
@Html.EditorFor(model => model.Cost, new { htmlAttributes = new { tabindex = 34 } })
答案 3 :(得分:1)
允许您保留EditorFor的另一个选项是在页面加载之后在javascript中设置选项卡索引:
var myEditorFor = document.getElementById("MyEditorForId");
if (myEditorFor != null) {
myEditorFor.setAttribute("tabindex","18")
}
答案 4 :(得分:0)
不幸的是,@ Html.EditorFor方法不提供添加HTML属性的功能。您可以通过更具体的方法调用添加这些。在上面的例子中我会使用 -
@Html.TextBoxFor(model => model.Cost, new { tabindex = 1 })