0

ビューを呼び出すときにコントローラーからコントロールにフォーカスを設定できますか?

(一般的なベスト プラクティスは、ページの読み込み時に jQuery を使用してコントロールにフォーカスを設定することだと理解しています。)

4

2 に答える 2

3

コントローラーの仕事 (そのうちの 1 つ) は、正しくレンダリングするのに十分な情報をビューに与えるビュー モデルをセットアップすることです。つまり、コントローラーとビューは疎結合のみにする必要があります。

これを行う1つの方法を次に示します。これは、よりエレガントに行うことができますが、多少分離されています。クライアント側のスクリプトを実行するには引き続き JavaScript が必要ですが、スクリプトはビュー モデルの値に基づいて生成されます。

コントローラ

public ActionResult Foo(){

   var model = new MyViewModel();
   model.SelectedItem = "FirstName";

   return View( model );
}

意見

@model MyViewModel

@Html.TextBoxFor( o => o.FirstName )

@if( Model.SelectedItem != default( string ) ){
    <script>$("#@(Model.SelectedItem)").focus();</script>
}
于 2012-10-27T22:16:16.730 に答える
3

Web 開発について学ばなければならないことの 1 つは、世界中のすべてのテクノロジをサーバー上で使用できるということですが、最終的には、それらのテクノロジは標準 (またはそれに相当するもの) の Html、CSS、および JavaScript を生成する必要があります。

つまり、クライアントで自動的に処理を実行するためにサーバーで実行できる特別な魔法はありません。一部のフレームワークでは、これを行うコードを自動的に生成できますが、最終的には標準の html/css/js として実行する必要があります。

MVC は、標準のプレーンな HTML のみをレンダリングします。Webforms は多くのことを行いますが、最終的に Webforms は標準の HTML も生成する必要があります。これは、読み込み時にフォーカスを設定するページに含まれる javacript を自動生成することによって行われます。

MVC はこれらのことを何もしないので、基本的には同じことを行う必要がありますが、それを作成する必要があります。簡単なjqueryを使用すると比較的簡単です。

于 2012-10-27T22:17:06.107 に答える