2011-07-13 9 views
12

どのように私は、コードを次のタブOrderプロパティを使用することができます任意の提案タブオーダー3つのヘルパー

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

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

を私はこれを試してみましたか?

+3

最後にSOが@AbdullahSaqibを見たのは、この質問が2011年に尋ねられてから5日後です。 –

答えて

13

ヘルパー自体に同じhtml属性を指定することもできます。

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

これは 'EditorFor'では機能しません。オブジェクトタイプのEditorForの2番目のパラメータは、ドキュメントごとに: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

// 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

別のオプションを実行します。あなたはまた、すでにエディタのテンプレートに直接ではなく、モデルにタブインデックスを追加することに渡されたのViewDataパラメータを使用することができます

@ModelType SomeApp.ViewModels.SomeNiftyViewModel 

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

、あなたがEditorForを保持できるように、ページがロードされた後に、タブのインデックスをjavacriptで設定することです:

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

if (myEditorFor != null) { 
    myEditorFor.setAttribute("tabindex","18") 
} 
関連する問題