자유게시판

시삽: 레드플러스 님 
게시판 이동:
 제목 : Re : asp.net mvc 질문 있습니다.
글번호: 1874
작성자: 레드플러스
작성일: 2023/08/25 오전 1:02:00
조회수: 2357

안녕하세요.

 

다음 링크를 참고해보세요.

https://github.com/VisualAcademy/DotNetNote/pull/2/commits/ff0fc7dee0b03826ed9d1d510b311b82bd8d4f3c

 

올려주신 소스 자체는 제가 전체적인 맥락을 알 수 없으니,

제 강의 메인 소스인 DotNetNote의 상세보기 페이지에서

Delete 버튼을 두고 바로 삭제하는 샘플 코드를 넣어봤습니다.

 

단지 테스트용으로 사용하시고, 실제 운영상으로는 보안상으로 좀 더 다르게 구성하여야 합니다.

 

감사합니다.

 

 


On 2023-08-24 오후 3:44:00, '박성현' wrote:

 

 


core 다 듣고 mvc db first로 게시판 만들어가는중에 질문이 있어서 남깁니다.
1. 상세 페이지에서 삭제버튼을 만들어서 클릭이후 삭제페이지를 넘기지 않고 삭제하는 방법을 찾았으나 잘 안되는 점입니다. (Ajax로 넘기면 404 error, 500 error 납니다.)
2. controller 삭제부분의 문제점이 있는것 같은데 어떻게 수정해야할지 궁금합니다.

아래에 Controller 소스와 Details소스입니다.

cotroller 소스

#region 삭제
        // GET: DotNetNote/Delete/5
        [ValidateAntiForgeryToken]
        public JsonResult Delete(int? id)
        {
            DotNetNoteArticle dotNetNoteArticle = db.DotNetNoteArticles.Find(id);
            if (dotNetNoteArticle == null)
            {
                return Json(new { success = false }, JsonRequestBehavior.AllowGet);
            }

            db.DotNetNoteArticles.Remove(dotNetNoteArticle);
            db.SaveChanges();

            return Json(new { success = true }, JsonRequestBehavior.AllowGet);
        }

        // POST: DotNetNote/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public JsonResult DeleteConfirmed(int id)
        {
            DotNetNoteArticle dotNetNoteArticle = db.DotNetNoteArticles.Find(id);
            if (dotNetNoteArticle == null)
            {
                return Json(new { success = false }, JsonRequestBehavior.AllowGet);
            }

            db.DotNetNoteArticles.Remove(dotNetNoteArticle);
            db.SaveChanges();

            return Json(new { success = true }, JsonRequestBehavior.AllowGet);
        } 
        #endregion

Details 소스
@model DotNetNoteJqGrid.Models.DotNetNoteArticle

@{
    ViewBag.Title = "Details";
}

<h2>상세보기</h2>
<script src="~/Scripts/jquery-3.4.1.min.js"></script>
<script src="~/Scripts/ckeditor/ckeditor.js"></script>

<form action="/DotNetNote/Edit/@Model.Num" method="post" enctype="multipart/form-data">
    <div class="form-horizontal">
        @Html.AntiForgeryToken()
        <hr />

        <div class="form-group">
            <label class="control-label col-md-2" for="Name">Name</label>
            <div class="col-md-10">
                <p class="form-control text-box single-line" /> @Model.Name
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2" for="Title">Title</label>
            <div class="col-md-10">
                <p class="form-control text-box single-line" />@Model.Title
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2" for="Content">Content</label>
            <div class="col-md-10">
                <textarea class="form-control ckeditor" id="Content" name="Content">@Model.Content</textarea>
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2" for="Tags">Tags</label>
            <div class="col-md-10">
                <p class="form-control text-box single-line" />@Model.Tags
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2" for="Password">Password</label>
            <div class="col-md-10">
                <p class="form-control text-box single-line" />@Model.Password
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2" for="Email">Email</label>
            <div class="col-md-10">
                <p class="form-control text-box single-line" />@Model.Email
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2" for="Homepage">Homepage</label>
            <div class="col-md-10">
                <p class="form-control text-box single-line" />@Model.Homepage
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2" for="ReadCount">ReadCount</label>
            <div class="col-md-10">
                <p class="form-control text-box single-line" data-val="true" data-val-number="ReadCount 필드는 숫자여야 합니다." data-val-required="ReadCount 필드가 필요합니다." />@Model.ReadCount
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-md-2" for="FileUpload">Upload File</label>
            <div class="col-md-10">
                <input type="file" id="file" name="file" class="form-control-file" />
                <span class="field-validation-valid text-danger" data-valmsg-for="file" data-valmsg-replace="true"></span>
            </div>
        </div>
    </div>
</form>

<p>
    <div class="col-lg-6 col-sm-12 text-right">
        <a class="btn btn-success btn-sm ml-2" href="/DotNetNote/Edit/@Model.Num">수정</a>
        <button id="btnDelete" class="btn btn-secondary btn-sm ml-2">삭제</button>
    </div>
    <div class="col-lg-6 col-sm-12">
        <button class="btn btn-primary btn-sm" onclick="location.href='/DotNetNote/Index'">목록</button>
    </div>
</p>

<script>
     $(document).ready(function () {
        $('#btnDelete').click(function () {
            var id = @Model.Num; // 삭제할 아이템의 ID 값을 가져옵니다.

            // AJAX 요청 설정
            $.ajax({
                url: '/DotNetNote/Delete/' + id,
                type: 'POST',
                dataType: 'json',
                success: function (result) {
                    if (result.success) {
                        // 삭제 성공 시, 필요한 처리를 수행합니다.
                        alert('삭제되었습니다.');
                        window.location.href = '/DotNetNote/Index'; // 목록 페이지로 이동
                    } else {
                        // 삭제 실패 시, 필요한 처리를 수행합니다.
                        alert('삭제에 실패했습니다.');
                    }
                },
                error: function () {
                    alert('오류가 발생했습니다.');
                }
            });
        });
    });
</script>
 

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 안녕하세요 닷넷을 베우려고 하는 사람인데요 - 최현명 2024-04-23 936
  asp.net mvc 질문 있습니다. - 박성현 2023-08-24 1962
현재글 Re : asp.net mvc 질문 있습니다. - 레드플러스 2023-08-25 2357
다음글 asp.net core 강의 - 박성현 2023-08-15 1533
 
손님 사용자 Anonymous (손님)
로그인 Home