ページをリロードせずにダイアログボックスにデータを表示する

user8189

ID +名前+価格が記載されたブートストラップダイアログボックスを表示しようとしています。

次に、ユーザーがダイアログで[はい]を選択した場合、削除機能があるActionメソッドを押し、ページのデータを更新して、ページを再読み込みせずに変更を確認する必要があります。

また、ユーザーの削除アクションメソッドにヒットした後は必要ありません。ビューを表示してはなりません。

以下のコードからViewBagを使用しようとしましたが、ブートストラップダイアログボックスにID +名前+価格が表示されず、アクションメソッドの削除にリダイレクトされず、ページが更新されません

ここに画像の説明を入力してください

@model IEnumerable<School.Models.ApplicationUser>

<hr>

    <table class="table table-responsive table-hover">

        <tbody>
            @foreach (var item in Model.OrderBy(x => x.DateTime))
            {
                <tr>
                    <td>
                        @Html.DisplayFor(modelItem => item.ID)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.Name)
                    </td>
                    <td>
                        @Html.DisplayFor(modelItem => item.Price)
                    </td>

                    <td>

                        <span style="color: #ff0000;">
                            <a class="btn btn-warning btn-sm disclaimer-dialog">
                                    <i class="fa fa-unlock">&nbsp;</i>Delete  
                                    ViewBag.MyId = @item.Id;                              
                                </a>

                        </span>
                         &nbsp;

                    </td>
                    @ViewBag.MyId
                </tr>
            }
        </tbody>
    </table>


@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    @Scripts.Render("~/Scripts/Views/SchoolAccounts/Delete.js")
}


<!-- Button trigger modal -->
<!-- Modal -->
<div class="modal fade" id="disclaimerModalDialog" tabindex="-1" role="dialog" aria-labelledby="exampleModalScrollableTitle" aria-hidden="true" data-keyboard="false" data-backdrop="static">
    <div class="modal-dialog modal-dialog-scrollable" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h3 class="modal-title" id="exampleModalScrollableTitle">Confirmation Deletion</h3>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                <p><strong>Are you sure you want to reset password for user ? @ViewBag.MyId </strong></p>

                @using (Html.BeginForm("DeleteProduct", "SchoolAccounts",

                    FormMethod.Post, new
                    {
                        @id = "delete-form",
                        role = "form"
                    }))
                {
                    @*@Html.HiddenFor(m => m.Id)
                        @Html.AntiForgeryToken()*@
                }
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default"
                        onclick="$('#delete-form').submit();">
                    Yes
                </button>
                <button type="button" class="btn btn-primary"
                        data-dismiss="modal">
                    No
                </button>
            </div>
        </div>
    </div>
</div>

Delete.jsのコンテンツ

$(function () {

    $('.disclaimer-dialog').click(function () {
        $('#disclaimerModalDialog').modal('show');
    });

});
ジャーディンセージ

ViewBagはそのように使用することはできません。ViewBagがページにレンダリングされると、その値を更新することはできません。ページの読み込みが完了すると、すべてのレイザー変数は静的になります。

私たちがする必要があるのは、html属性にそれらの値を割り当てることです。

  1. ループ内のリンクを変更して、データプロパティを設定します。私が使用しdata-iddata-namedata-price
@foreach (var item in Model.OrderBy(x => x.DateTime))
{
   <tr>
      @*just modify the link in the last column*@

      <td>
         <span style="color: #ff0000;">
            <a data-id="@item.Id" data-name="@item.Name" data-price="@item.Price" class="btn btn-warning btn-sm disclaimer-dialog">
               <i class="fa fa-unlock">&nbsp;</i>
               Delete                           
            </a>
         </span>
      </td>
   </tr>
}
  1. Delete.jsを変更して、これらの属性にアクセスし、モーダルのコンテンツを置き換えます。
$(function () {

    $('.disclaimer-dialog').click(function () {

        // get attributes from the button
        var id = $(this).data("id");
        var name = $(this).data("name");
        var price = $(this).data("price");

        // Assign value to delete-id
        $(".delete-id").val(id);

        // update the first paragraph in modal-body
        $('#disclaimerModalDialog').find(".modal-body p").eq(0).html("Are you sure you want to delete "+id+"-"+name+"-"+price+"?");

        $('#disclaimerModalDialog').modal('show');
    });

});
  1. モーダルボディでは、これを入力フィールドに使用します。簡単にアクセスできるように、クラスを追加する必要があります。
@Html.HiddenFor(m => m.Id, new { @class="delete-id" });
  1. この関数をDelete.jsに追加します
$(function(){
   $("#delete-form").submit(function(e){
      // this will stop the page from refreshing or redirecting
      e.PreventDefault();

      var deleteId = $(".delete-id").val();
      var passData = { id:deleteId };

      // ajax call here
      $.ajax({
        type: "POST",
        url: "/ControllerName/DeleteAjax",
        data: JSON.stringify(passData),
        contentType: "application/json; charset=utf-8",
        dataType: "html",
        success: function(result){
           alert(result);

           // find the link with data-id == deleteid
           // .parent() = span
           // .parent().parent() = td
           // .parent().parent().parent() = tr
           // .remove() = remove that row

           $("table a[data-id='"+deleteId+"']").parent().parent().parent().remove();
        },
        error: function(err){
           alert(err);
        }
      });
   });
});
  1. コントローラにこの関数を追加します。DeleteAjax;
[HttpPost]
public ActionResult DeleteAjax(string id)
{
   var product = context.Products.FirstOrDefault(p=>p.Id == id);

   if(product == null){
      return Content("error, cant find Id")
   }else{
      context.Products.Remove(product);
      context.SaveChanges();
      return Content("successfully deleted");
   }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ページをリロードせずにダイアログボックスにフォームをリロードする

分類Dev

ページをリロードせずにデータベースからドロップダウンボックスにデータを入力する

分類Dev

Jqueryダイアログボックスに新しいページをロードする方法

分類Dev

ページをリロードせずに送信ボタンのテキストボックスをクリアする

分類Dev

ページを変更せずにJqueryモバイルダイアログボックス

分類Dev

Webページをリロードせずにデータベースをクエリする方法は?

分類Dev

mvc5でページ全体を更新せずに現在の追加データドロップダウンリストを表示する

分類Dev

ボタンをクリックせずにウェブページをロードする

分類Dev

ページをリロードせずにSQLデータベースにデータを投稿する

分類Dev

ページをリロードせずにボタンを表示/非表示

分類Dev

テキストボックスに古いデータを入力せずにページphpをリロードします(PHP)

分類Dev

データベースから取得したレコードをダイアログボックスに表示するには

分類Dev

ページをリロードせずにエラーメッセージをクリアする

分類Dev

エラーメッセージダイアログボックスの後に入力ダイアログボックスを表示する

分類Dev

ログインページにリダイレクトせずにGoogleカレンダーを承認する

分類Dev

ページをリロードせずにコンボボックスで要素を選択すると、データベースからテキストボックスに自動入力されます

分類Dev

Firebaseリアルタイムデータベースを備えたAndroidStudioアプリで、ユーザーページではなくメインページにリダイレクトするログインボタン

分類Dev

$ httpリクエストペイロードをモックせずにアサートする

分類Dev

ダイアログボックスのポジティブボタンをクリックした後、sharedPreferencesにデータを保存できません

分類Dev

ボタンをクリックすると、ページをリロードせずに入力フィールドに値が入力されます

分類Dev

ページをリダイレクトまたはリロードせずにhtml要素をクリックするとコードを実行します

分類Dev

ページをリロードせずにドロップダウンリストにオブジェクトを追加する

分類Dev

ダイアログボックスがページの上部に表示されることはありません

分類Dev

タグのクラス属性を変更し、ページをリロードせずにスタイルを適用する方法

分類Dev

Google Analytics API JavaScriptは、ダッシュボードでユーザーにログインせずにデータを表示します

分類Dev

ページロード後はマップは表示されませんが、ボタンをクリックすると表示ブロックになります

分類Dev

[ファイルのダウンロード]ダイアログボックスを使用せずに、WebBrowserコントロールを使用してファイルをダウンロードするにはどうすればよいですか?

分類Dev

ダイアログボックスから新しいページにリダイレクトする

分類Dev

ページをリロードせずにRhinosliderJqueryプラグインをリセットする方法は?

Related 関連記事

  1. 1

    ページをリロードせずにダイアログボックスにフォームをリロードする

  2. 2

    ページをリロードせずにデータベースからドロップダウンボックスにデータを入力する

  3. 3

    Jqueryダイアログボックスに新しいページをロードする方法

  4. 4

    ページをリロードせずに送信ボタンのテキストボックスをクリアする

  5. 5

    ページを変更せずにJqueryモバイルダイアログボックス

  6. 6

    Webページをリロードせずにデータベースをクエリする方法は?

  7. 7

    mvc5でページ全体を更新せずに現在の追加データドロップダウンリストを表示する

  8. 8

    ボタンをクリックせずにウェブページをロードする

  9. 9

    ページをリロードせずにSQLデータベースにデータを投稿する

  10. 10

    ページをリロードせずにボタンを表示/非表示

  11. 11

    テキストボックスに古いデータを入力せずにページphpをリロードします(PHP)

  12. 12

    データベースから取得したレコードをダイアログボックスに表示するには

  13. 13

    ページをリロードせずにエラーメッセージをクリアする

  14. 14

    エラーメッセージダイアログボックスの後に入力ダイアログボックスを表示する

  15. 15

    ログインページにリダイレクトせずにGoogleカレンダーを承認する

  16. 16

    ページをリロードせずにコンボボックスで要素を選択すると、データベースからテキストボックスに自動入力されます

  17. 17

    Firebaseリアルタイムデータベースを備えたAndroidStudioアプリで、ユーザーページではなくメインページにリダイレクトするログインボタン

  18. 18

    $ httpリクエストペイロードをモックせずにアサートする

  19. 19

    ダイアログボックスのポジティブボタンをクリックした後、sharedPreferencesにデータを保存できません

  20. 20

    ボタンをクリックすると、ページをリロードせずに入力フィールドに値が入力されます

  21. 21

    ページをリダイレクトまたはリロードせずにhtml要素をクリックするとコードを実行します

  22. 22

    ページをリロードせずにドロップダウンリストにオブジェクトを追加する

  23. 23

    ダイアログボックスがページの上部に表示されることはありません

  24. 24

    タグのクラス属性を変更し、ページをリロードせずにスタイルを適用する方法

  25. 25

    Google Analytics API JavaScriptは、ダッシュボードでユーザーにログインせずにデータを表示します

  26. 26

    ページロード後はマップは表示されませんが、ボタンをクリックすると表示ブロックになります

  27. 27

    [ファイルのダウンロード]ダイアログボックスを使用せずに、WebBrowserコントロールを使用してファイルをダウンロードするにはどうすればよいですか?

  28. 28

    ダイアログボックスから新しいページにリダイレクトする

  29. 29

    ページをリロードせずにRhinosliderJqueryプラグインをリセットする方法は?

ホットタグ

アーカイブ