гадюка.Всплывающее окно расширения модели Net MVC не отображалось при нажатии на кнопку

#c# #asp.net-mvc

Вопрос:

Я столкнулся с проблемой в своей ASP.NET Проект MVC.

Я создал проект с первым подходом к базе данных, но при попытке открыть страницу редактирования с помощью всплывающего диалогового окна диалоговое окно не отображалось.

Класс таблиц с использованием автоматически сгенерированного класса таблиц, созданного во время добавления модуля Entity Framework.

 namespace Ecommerce_EF_DB_18May21.Models
{
    using System;
    using System.Collections.Generic;
            
    public partial class Tbl_Category
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Tbl_Category()
        {
            this.Tbl_Product = new HashSet<Tbl_Product>();
        }
            
        public int CategoryId { get; set; }
        public string CategoryName { get; set; }
        public bool IsActive { get; set; }
        public bool IsDelete { get; set; }
        public bool IsFeatured { get; set; }
        public string ImageURL { get; set; }
            
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Tbl_Product> Tbl_Product { get; set; }
    }
}
 

Это мои действия контроллера:

 [HttpGet]
public ActionResult EditP(int id)
{
    var category = categoryService.GetCategoryID(id);
    return PartialView(category);
}

[HttpPost]
public ActionResult EditP(Tbl_Category category)
{
    categoryService.updateCategory(category);
    return RedirectToAction("Index");
}
 

Кнопка редактирования для вызова всплывающего диалогового окна на странице индекса

 <div>
        <table class="table table-striped">
            <thead>
                <tr>
                    <td>Category Name</td>
                    <td>Is Active</td>
                    <td>Is Featured</td>
                    <td>Actions</td>
                </tr>
            </thead>
    
            <tbody>
                @foreach (var item in Model)
                {
                    <tr>
                        <td>@item.CategoryName</td>
                        <td>@item.IsActive</td>
                        <td>@item.IsFeatured</td>
                        <td>
                            <button class="Btn_Edit" id="BtnEdit" data-id="@item.CategoryId" data-toggle="modal" data-target="#myModalEdit">Edit</button>
                    

        <button class="dltBtn" data-id="@item.CategoryId">Delete</button>
                    </td>
                </tr>
            }
        </tbody>
    </table>
</div>
 

This is the Edit page markup:

 @{
    ViewBag.Title = "EditP";

    var trueChecked = Model.IsFeatured ? "checked" : string.Empty;
    var falseChecked = !Model.IsFeatured ? "checked" : string.Empty;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<form id="EditCat">
<div class="container">
    <!-- The Modal -->
    <div class="modal fade" id="myModalEdit">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content">

            <!-- Modal Header -->
            <div class="modal-header">
                <h4 class="modal-title">Edit Category</h4>
                <button type="button" class="close" data-dismiss="modal">amp;times;</button>
            </div>

            <!-- Modal body -->
            <div class="modal-body">
                <input type="hidden" name="ID" value="@Model.CategoryId" />
                <div class="form-group">
                    <input type="text" value="@Model.CategoryName" class="form-control" id="txtName1" name="Name" placeholder="Enter Category" />
                </div>
                <br />
                <div class="form-group">
                    <label>Is Featured?</label>
                    <input name="IsFeatured" type="radio" value="True" @trueChecked /> True
                    <input name="IsFeatured" type="radio" value="False" @falseChecked /> False
                </div>
                <br />
                <label>Image</label>
                <input id="ImageURLEdit" name="ImageURL" type="hidden" />
                <input id="imageUploadEdit" name="Image" type="file" />
                <div class="thumb">
                    <img id="EditCatImage" style="height:150px; width:250px;" />

                </div>
            </div>

            <!-- Modal footer -->
            <div class="modal-footer">
                <button id="UpdateBtn" type="button" class="btn btn-primary" data-dismiss="modal">Update</button>
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
            </div>

        </div>
    </div>
</div>
</div>
</form>
 

Скрипт также прилагается

 <script src="~/Scripts/jquery-1.10.2.min.js"></script> <script>
     //EditBtn Modal
     $("#UpdateBtn").click(function () {
         $.ajax({
             type: 'POST',
             url: '/Category/EditP',
             data: $("#EditCat").serialize()
         })
         .done(function (response) {
             $("#myModalEdit").html(response);
             $("#actionCon").html("");
         })
         .fail(function (XMLHttpRequest, textStatus, errorThrown) {
             alert("Fail");
         });
     });
 
     //Image Upload
     $("#imageUpload").change(function () {
         var element = this;
         var formData = new FormData();
         var totalFiles = element.files.length;

         for (var i = 0; i < totalFiles; i  ) {
             var file = element.files[i];
             formData.append("Photo", file);
         }
 
         $.ajax({
             type: 'POST',
             url: '/Shared/UploadImage',
             dataType: 'Json',
             data: formData,
             contentType: false,
             processData: false
         })
 
        .done(function (response) {
 
            if (response.Success) {
                $("#ImageURLEdit").val(response.ImageURL);
                $("#EditCatImage").attr("src", response.ImageURL);   
            }
        })
        .fail(function (XMLHttpRequest, textStatus, errorThrown) {
            alert("Fail");
        });
}); 
</script>
 

Теперь, когда я нажимаю на кнопку редактирования, всплывающее окно не отображается, а браузер показывает, как положение зависания.

После нажатия на кнопку «Изменить» снимок экрана прилагается.

Комментарии:

1. Скриншота нет… есть ли какая-либо ошибка в консоли браузера?.. Вы явно загрузили jquery в разметку страницы редактирования, но не загрузили файлы js и CSS..

2. Я удалил то, что кажется (вашим) личным номером телефона в конце поста. Пожалуйста, не разглашайте нежелательную личную информацию в Интернете.

3. похоже, что цель вашего идентификатора не достигает вашего модального. вам нужен уникальный идентификатор в качестве примера : id="myModalEdit-@item.CategoryID" . я думаю, что вы просто пытаетесь создать динамический модал. проще говоря, вы можете указать этот модальный параметр и указать значения в нем. в трудном случае вы можете создать частичное представление и вызвать его, когда нажмете на модальную кнопку. просто дай мне знать, если захочешь сделать это трудным способом. я за это отвечу

4. Привет, БеркГарип, не понимаю вашего решения, пожалуйста, приведите полный пример. заранее спасибо.

5. Привет, Акшай Гаонкар, в консоли браузера нет ошибки.