asp.net サイトを MVC 4 に変換しています。私のサイトには、ユーザー名とパスワードの入力を求める loginbox というコントロールがあります。コントロールは、ホスティング ページが呼び出すことができる IsLoggedIn というメソッドも公開します。ログイン ボックス コントロールにログイン ロジックをカプセル化し、親レベル ページ (つまり、loginBoxInstance.IsLoggedIn()) から同様の方法で呼び出したいと考えています。それ、どうやったら出来るの?
質問する
317 次
1 に答える
0
MVC にはユーザー コントロールの概念がありません。MVC の全体的な設定は、ビューからロジックを分離することです。別のコントローラーと部分ビューを作成することで、同様のセットアップを実現できます。
次に、メイン ビューで、部分ビューをレンダリングするコントローラーで RenderAction を呼び出すことができます。ただし、これはレンダリング段階でのみ有効であるため、IsLoggedIn() のようなものは MVC で実行できる (または実行する必要がある) ものではありません。
例:
コントローラ
public class LoginController
{
public ActionResult Login()
{
return PartialView();
}
}
部分図
// Place this file in Views/Login/Login.cshtml
<div>
<!-- Your markup -->
</div>
メインビュー
@Html.RenderAction("Login", "Login")
これにより、ログイン レンダリングのビュー部分 (およびロジック) を、別のビューに含めることができる別のコントローラーとビューに分離できます。
ただし、おそらく必要なのは、アクション属性のようなものか、これらすべてを処理する基本コントローラー クラスから継承することです。
MVC と Web フォームのパラダイムは大きく異なります。これを行うためのより適切な方法を検討する必要があると思います。
于 2013-08-19T14:51:47.740 に答える