asp.net - एपीपीएमसी एमवीसी में[एचटीटीपी पोस्ट] विशेषता के साथ कार्य पद्धति का काम नहीं किया



asp.net-mvc model (1)

Razor Engine साथ asp.net mvc 5 में डेटा हटाने के लिए, मैंने ये कोड लिखा है जो ठीक काम करता है मैं इसे [HttpPost] विशेषता देना चाहता हूं, लेकिन अगर मैं जोड़ता हूं, तो काम नहीं किया। क्या कोई मेरी मदद कर सकता है कि समस्या क्या है? मेरे पास केवल एक ही क्रिया को delete दिया गया है, मुझे [HttpGet] विशेषता के साथ एक और Delete कार्रवाई की आवश्यकता नहीं है। मेरे द्वारा यह कैसे किया जा सकता है ?

Repositories.cs

public bool Delete(int id, bool autoSave = true)
    {
        try
        {
            var entity = db.Carousels.Find(id);
            db.Entry(entity).State = System.Data.Entity.EntityState.Deleted;
            if (autoSave)
                return Convert.ToBoolean(db.SaveChanges());
            else
                return false;
        }
        catch
        {
            return false;
        }
    }

व्यवस्थापक नियंत्रक

public ActionResult DeleteCarousel(int id)
    {
        CarouselRepositories blCarousel = new CarouselRepositories();
        blCarousel.Delete(id);
        return View("ShowCarousel", blCarousel.Select());
    }

ShowCarousel.cshtml

@model IEnumerable<NP1.Models.Carousel>

@{
ViewBag.Title = "ShowCarousel";
Layout = "~/Views/Admin/AdminLayout.cshtml";
}


 <table class="table">
 <tr>
    <th>
        @Html.DisplayNameFor(model => model.CarouselSubject)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.CarouselInfo)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.CarouselImage)
    </th>
    <th></th>
 </tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.CarouselSubject)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.CarouselInfo)
    </td>
    <td>
        @*@Html.DisplayFor(modelItem => item.CarouselImage)*@
        <img style="width:300px; height:200px;" src="~/Images/Carousel/@item.CarouselImage" />
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.CarouselID }) |
        @Html.ActionLink("Delete", "DeleteCarousel", new { id = item.CarouselID })
    </td>
</tr>
 }

</table>

आपको [HttpPost] विशेषता के साथ विधि को चिह्नित करें

[HttpPost]
public ActionResult DeleteCarousel(int id)
{
  ....
}

और ActionLink() बजाय एक फ़ॉर्म का उपयोग करने के लिए दृश्य को परिवर्तित करें

@foreach (var item in Model)
{
  <tr>
    <td>@Html.DisplayFor(m => item.CarouselSubject)</td>
    ....
    <td>
        @using (Html.BeginForm("DeleteCarousel", "yourControllerName", new { id = item.CarouselID }, FormMethod.Post))
        {
          <input type="submit" value="Delete" /> // style it look like a link if you want
        }
    </td>
  </tr>
}

यदि आप हटाने से पहले एक पुष्टिकरण संदेश भी चाहते हैं, तो निम्न jquery स्क्रिप्ट जोड़ें (यदि उपयोगकर्ता क्लिक पर क्लिक किए बिना क्लिक को Cancel या बंद करता है तो फ़ॉर्म को रद्द कर दिया जाएगा)

$('form').submit(function() {
  return confirm('Are you sure to delete it?');
})




asp.net-mvc-5