3

私はEFを使用してMVC3アプリケーションを開発しており、jQuery ajaxを使用してUIを流暢にしたいと考えていました。ユーザーは、URLを知っているか、特定のルートを指すリンクを受け取る可能性がある場合、URLをナビゲートできます。 、ページが完全に読み込まれると、流暢である必要があるため、1つのアイデアを思いついたので、ソリューションに変更を加える前に、ここでそれについて説明したいと思います。

これが私が思いついたものです:

TestController.cs(簡単にするためにメソッドコードは省略されています)

public ActionResult Index() { ... }

public ActionResult Create() { ... }
[HttpPost]
public ActionResult Create(Test test) { ... }

public ActionResult Update(int testID) { ... }
[HttpPost]
public ActionResult Update(Test test) { ... }

public ActionResult Delete(int testID) { ... }
[HttpPost]
public ActionResult Delete(Test test) { ... }

これまでのところ、ほとんどのコントローラーのように見えます。私の見解は次のとおりです。

Views\Test\List.cshtml
Views\Test\Create.cshtml
Views\Test\Details.cshtml
Views\Test\Delete.cshtml

非同期でやりたかったので、リストビューを変更して、リストに追加、変更、削除できるようにしました。これまでのところ、魅力のように機能しています。さらに、ユーザーはURLを使用してアプリケーション内を移動できます。アプリケーション内のすべてのリンクは、実際の作業を行うためにajaxリクエストを実行し、ルート/アクションリンクはありません。

これでアプリケーションは期待どおりに動作しますが、何かに遭遇しました。ActionResultとPartialViewResultである必要があるビューがあります。これは、ユーザーがURL「/ Admin /Test」を入力できるためです。これにより、全ページ、または「/ Admin/Test」のコンテンツのみをロードして表示するアンカーをクリックすることもできます。ページ内の有名なページエラーを回避するために、関数を作成しましたリクエストを送信し、リクエストが到着すると、必要なものだけを選択し、ページ内のページを避けてビューを複製しますが、応答はページ全体であり、言うまでもありませんが、最良のオプションですが、アプリケーションはlanによって使用されるため、応答のペイロードについてはあまり気にしませんでしたが、ビュー内にjavascriptコードを記述する必要があったため、jQueryセレクターを使用してjavascriptがなかったので必要なものだけを入手してください。

最後の解決策を解決するための新しい解決策について:元のビューをそのままにして、元の名前の後に「Partial」という単語を追加して別のビューを作成し、同じ命名規則でコントローラーに別のメソッドを作成し、さらに新しいルートをルートテーブルに追加します。

まとめると、必要なのは次のとおりです。-ユーザーが「/ Test」と入力した場合、応答はページ全体で、昔のように読み込まれ、画面が白く点滅する必要があります。-しかし、ユーザーがナビゲーションバーの[テスト]リンクをクリックすると、応答は非同期になり、レイアウトのコンテンツのみが更新されます。

何か案は?考え?提案?

4

1 に答える 1

2

あなたのアクションメソッドであなたが持つことができます

 if (Request.IsAjaxRequest())
      return PartialView("_somePartialView");
 else
      return PartialView("_someOtherPartialView");
于 2012-08-11T14:46:25.507 に答える