ASP.NET MVC 3助手中的Tab顺序

时间:2011-07-13 12:39:03

标签: asp.net asp.net-mvc tab-ordering

如何将Tab Order属性用于以下代码:

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

我试过了:

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

有什么建议吗?

5 个答案:

答案 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 })