2011-07-13 84 views
12

如何,我可以使用Tab鍵順序屬性下面的代碼:Tab順序

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

我嘗試這樣做:

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

有什麼建議?

+3

上次見到@AbdullahSaqib是在2011年問這個問題後的5天 –

回答

13

您也可以在助手本身中指定相同的html屬性,如下所示。

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

這在'EditorFor'中不起作用,EditorFor類型對象中的第二個參數用於構建View Data而不是添加HTML屬性根據文檔:http://msdn.microsoft.com/en-us/library/ff406462.aspx –

+0

您不能在EditorFor中指定其他參數。 –

+1

令人印象深刻的是upvotes唯一的答案是不正確的。 –

0

不幸的是@ Html.EditorFor方法不能提供添加HTML屬性的能力。您可以通過更具體的方法調用來添加這些。在上述情況下我會使用 -

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

+3

他不必離開EditorFor。他可以輕鬆創建一個編輯器模板。 –

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 }) 
+1

感謝您的想法,完美工作。 –

1

只要做到這一點

@Html.EditorFor(model => model.Cost, new { htmlAttributes = new { tabindex = 34 } }) 
1

另一種選擇,允許你保留EditorFor,就是在頁面加載類似這樣的東西后在javascript中設置標籤索引:

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

if (myEditorFor != null) { 
    myEditorFor.setAttribute("tabindex","18") 
}