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




asp.net-mvc model compiler-errors asp.net-mvc-5 (2)

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>

Answers

आपको [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?');
})

मैं एएसपी.नेट एमवीसी में नया हूं। मुझे एक ही समस्या का सामना करना पड़ा, मेरे Erorr.vbhtml में मेरा काम करने योग्य है (यह काम करता है अगर आपको केवल एल्मा लॉग का उपयोग करके त्रुटि लॉग करने की आवश्यकता है)

@ModelType System.Web.Mvc.HandleErrorInfo

    @Code
        ViewData("Title") = "Error"
        Dim item As HandleErrorInfo = CType(Model, HandleErrorInfo)
        //To log error with Elmah
        Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(New Elmah.Error(Model.Exception, HttpContext.Current))
    End Code

<h2>
    Sorry, an error occurred while processing your request.<br />

    @item.ActionName<br />
    @item.ControllerName<br />
    @item.Exception.Message
</h2> 

यह बस है!







asp.net asp.net-mvc model compiler-errors asp.net-mvc-5