@Html.TextBoxFor(m => m.MyField)
を使用すると通常<input id="MyField" name="MyField" type="text" value="" />
になり、jqueryの要素にアクセスしたい場合は$("#MyField")
となります。手動でIDをjqueryセレクタに入力しないようにする方法はありますか? ClientIDプロパティを使用して要素のIDを取得する古典的なasp.netの背景から来ているので、私にはこのようにするのは難しいようです。したがって、レンダラーがIDの生成方法を変更した場合、コードは自動的に更新されます。上記の例でMyFieldをMyNewFieldに変更した場合、コンパイラは強く型付けされた参照をすべて変更するように指示しますが、jqueryセレクタを変更するように指示するものはありません。ASP.NET MVC3自動生成フォーム要素IDの取得
答えて
は、プロパティを取得する簡単な方法を記述し、それが反射して名前だ戻って、このようにそれを使用します。
static string GetVariableName<T>(Expression<Func<T>> expression)
{
var body = expression.Body as MemberExpression;
return body.Member.Name;
}
$('#' + @(GetVariableName(() => Model.MyField)))
が動作するはずです。
ええ、それは、私がHTMLヘルパーと同じIDを生成するために同じメカニズムを使用していることを保証するものではありません。私がオリジナルの質問にコメントするとき、ヘルパーはラベルやテキストボックスなどを生成するためにヘルパーに一貫したメカニズムを使用してIDを生成させます。生IDを取得する方法はありませんか? MVC4 MSでIDを生成する方法を変更すると、私が使用するカスタムメソッドは動作しなくなります。これが回避しようとしているものです。 –
@DaleBurrell。心配しないでください。プロパティ名は生成されたIDと名前のままです。これは、MVCの 'Model Binder'がどのように動作するかです。 Microsoftが今後これを変更すれば、すべてのasp.net MVC開発者はあなただけでなく大きな問題になるでしょう。 **それは起こりません!** – gdoron
あなたはおそらく正しいですが、それは私のコーディングルールに反しています:)しかし、私はあなたにこの投稿を見つけるのを助けたので答えを与えるつもりです。http://stackoverflow.com/questions/3065307/client-id-for-property-asp-net-mvcあなたの提案を受け取り、他の拡張機能と同じメカニズムを使用します。ご協力いただきありがとうございます。 –
- 1. ASP.NET MVCフォーム要素名の生成
- 2. MVC3自動生成コードエラー
- 3. Javaコードの自動生成IDをOracleデータベースから取得
- 4. ASP Repeater - 生成された要素IDを取得
- 5. エンティティ内の埋め込みID列の自動生成IDの取得方法
- 6. 自動生成された要素からIDとタイトルを取得する方法
- 7. 自動生成ID(WEB API2)
- 8. 自動生成IDリード
- 9. ASP.NETフォーム認証 - ユーザーIDの取得
- 10. テーブル内のフォーム要素のユニークIDの取得
- 11. 要素IDの自動インクリメント値
- 12. ASP.NETでDBから自動生成されたID
- 13. ASP.net MVC3のViewBag要素の寿命
- 14. asp.net mvcの複数のコントロールの自動生成IDを取得する方法は?
- 15. 要素自動作成し、
- 16. Neo4jのIDの自動生成
- 17. ASP.NETでの動的フォームの生成
- 18. flush()の直後に自動生成されたIDを取得するsymfony3
- 19. faceletコンポーネントの自動生成ID
- 20. ASP.NETでの自動マシンキーの生成
- 21. if/elseステートメントの要素IDの取得
- 22. クリック時の要素IDの取得
- 23. ckeditor内の要素のIDを取得
- 24. テスト自動化html要素セレクタ。要素IDまたはDataAttribute
- 25. 動的に作成javascriptの要素のIDを取得します
- 26. ASP.NET MVCの自動インクリメントID
- 27. SignalR - ボタンの要素IDを取得
- 28. ビューポート内の要素IDを取得
- 29. 要素のIDを取得する
- 30. 要素のIDを取得する
@ Html.TextBoxFor(m => m.MyField、new @ class = "someClass")はできません。代わりにJQueryセレクターとしてクラスを使用しますか? ASP.NETで作業する場合、ASPは多くのIDを自動的に生成するため、フロントエンドの開発者は通常、セレクタとしてクラスを使用します。 –
はい、私はそれを行うことができます - 私はハックを考慮するが、この場合、私は既にIDを持つ一意の要素を識別しようとしているので、そして、実際にそのアプローチに従って、私が望むならば同じ方法でIDをハードコードすることができます。私は、自動マジックが一貫して起こるようにするアプローチを望んでいました。たとえば、Html.LabelForとHtml.TextBoxForがあり、どちらも一貫性のあるHtml.JavascriptIdForについて何か一貫した名前を持つでしょうか? –