私は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」と入力した場合、応答はページ全体で、昔のように読み込まれ、画面が白く点滅する必要があります。-しかし、ユーザーがナビゲーションバーの[テスト]リンクをクリックすると、応答は非同期になり、レイアウトのコンテンツのみが更新されます。
何か案は?考え?提案?