ASP.NET MVCのjQuery CRUD
-
05-07-2019 - |
質問
Javascriptが有効になっていることが保証されている clients ユーザーがいるイントラネットをチームが維持しているように見えるため、jQueryを使用して、「より徹底的に」jQueryを使い始めることができます。私たちのシステムは非常に大きいため、ASP.NET MVCアプリケーションで領域を使用しても、領域のサブシステムごとにデータのセットを追加、編集、削除、および表示するための膨大な量のページは非常に大きくなります。エリアのサブシステムは、およそ20のデータテーブルを持つことができます。 20のデータテーブルがあり、それらを追加、編集、削除、表示する個々のページがある場合、合計で 60 ページがあることを意味します。ここで、エリアごとに20のサブシステムがあり、1つのエリアに20 * 60ページがあり、イントラネットに約15のエリアがあるとします。ポイントを得る、それは巨大です。
実際のポイントに移り、ページにデータのテーブルを作成し、「削除」をクリックするjQuery機能を使用して、これを削減したいと考えています。確認ボタンが付いた削除ダイアログが表示され、フォームが送信され、正しいアクションにリダイレクトされ、作業が行われます。次の領域でいくつかのガイダンスが必要になりました。
- ASP.NET MVCを使用してポストバックせずに削除したい場合、これを行うプロセスは何ですか?これには、削除のヒット、削除、削除可能のチェック(FKリレーションシップを正しい方法で処理する必要があります)が含まれ、それを削除してビュー内のテーブルから行を削除できる場合は、すべてページを更新しません。
- jQueryを使用して非同期プロセスから削除アクションを呼び出すにはどうすればよいですか?そうするのは賢明ですか?通常、
Html.ActionLink
を使用します。フォームでラップする必要がありますか? - 編集と更新についても同じことが言えますが、これを行う最良の方法は何ですか?
エレガントなソリューションを探しています。これを行う必要のあるすべてのページに適用するのは難しくありません。どんな入力でも大歓迎です。
解決
リンクを使用して、AJAX POST(ポストバックなし)を介して削除アクションを起動するプロジェクトに取り組んでいます。
$("a.deleteLink").click(function(event)
{
event.preventDefault();
if (confirm("Are you sure you want to delete this section?"))
{
//TODO Display processing indicator
var myId = /* id of element */ ;
$.post("/Section/Delete", { id: myId }, function(data)
{
if (data == "Success")
{
//handle success
//TODO Fade out element using .fadeOut()
}
else
{
//handle error
}
});
}
});
コントローラーメソッドは、/ Controllers / SectionController.csにあります。データベースを変更するアクションと同様に、POSTのみを受け入れます。
private SectionRepository secRepo = new SectionRepository();
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Delete(long id)
{
Section sec = secRepo.GetById(id);
secRepo.Delete(sec);
secRepo.Save();
return Content("Success");
}
他のヒント
Subsonicを使用してASP.NET MVCで取得できるいくつかのテンプレートに関するビデオを視聴しました。私はまだこれを実装していないか、試してみましたが、信じられないほどに見えます! こちらをご覧ください。
これがあなたのための実行可能なオプションであるかどうかはわかりませんが、最近あなたと同様のニーズがあり、プライマリアプリケーションをASP.NET MVCアプリケーションとしてリリースしています( jQgrid )、そして動的データを使用した管理機能用のセカンダリASP.NET Webフォームアプリケーション。これは非常にうまく機能し、時間を大幅に節約しました。
DynamicDataとMVC のようにも見えます。次のリリースのいくつかで一緒になります。
その他の読み物...
* David Hayden
* rbqsoft
* Sharp Architecture Wiki
Chad Myersにはこれに関する良い記事。
また、Dino Espositoの one 。
jQueryダイアログもパーティーにスローしたい場合は、この Ricardo Covoの投稿は良い仕事をしています