【问题标题】:Asp.net mvc delete with AcceptVerbs HttpVerbs.Post method auto invoke problemAsp.net mvc delete with AcceptVerbs HttpVerbs.Post 方法自动调用问题
【发布时间】:2011-09-09 01:44:50
【问题描述】:

我是 Asp.net MVC 的新手。 我有一个管理用户的应用程序。我的问题是,当我单击用户行的删除链接时,删除方法有 [AcceptVerbs(HttpVerbs.Post)] 注释在调用渲染删除方法后自动调用。因此,在我单击删除确认按钮之前,具有 id 的用户已被删除,之后出现错误。

之前一切正常。所以,我不知道为什么会这样。

我的代码:

        // GET: /User/Delete/5
        [Authorize]
        public ActionResult Delete(int id)
        {
            return View(GetByUserId(id));
        }


        // POST: /User/Delete/5
        [Authorize]
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Delete(Users user)
        {
           //some process
        }

第二个方法在第一个方法被调用后自动调用。

观点:

<h2>Delete</h2>
<p class="error"><%= Html.Encode(ViewData["messages"]) %></p>
<h3>Are you sure you want to delete this?</h3>
<fieldset>
    <legend>Fields</legend>

    <div class="display-label">UserId</div>
    <div class="display-field"><%= Html.Encode(Model.UserId) %></div>

    <div class="display-label">UserName</div>
    <div class="display-field"><%= Html.Encode(Model.UserName) %></div>

    <div class="display-label">FullName</div>
    <div class="display-field"><%= Html.Encode(Model.FullName) %></div>

    <div class="display-label">Email</div>
    <div class="display-field"><%= Html.Encode(Model.Email) %></div>

    <div class="display-label">DayOfBirth</div>
    <div class="display-field"><%= Html.Encode(String.Format("{0:MM/dd/yyyy}", Model.DayOfBirth))%></div>

    <div class="display-label">Phone</div>
    <div class="display-field"><%= Html.Encode(Model.Phone) %></div>

    <div class="display-label">Active</div>
    <div class="display-field"><%= Html.Encode(Model.Active) %></div>

</fieldset>
<% using (Html.BeginForm()) { %>
    <p>
        <input type="submit" value="Delete" /> |
        <%= Html.ActionLink("Back to List", "Index") %>
    </p>
<% } %>

【问题讨论】:

  • 您也可以发布删除视图吗?
  • 您能否发布包含删除链接的视图部分?
  • 感谢您的回复。我在上面的帖子中添加了视图

标签: asp.net-mvc asp.net-mvc-2


【解决方案1】:

您可以创建另一个视图来解决您确认删除的目的。

请使用以下链接查找更多详细信息。

http://forums.asp.net/t/1513258.aspx

【讨论】:

  • 感谢@alok_dida,上面的解决方案可以帮助我解决我的问题。但是我想弄清楚我的代码和视图是第一次工作但现在不行:) 你知道为什么吗?
【解决方案2】:

请在下面找到您的修改代码。

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }

    public ActionResult Delete()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Delete(RegisterModel ob)
    {
        return RedirectToAction("Index");
    }
}

索引.cshtml

 @{
        ViewBag.Title = "Home Page";
    }
    <h2>@ViewBag.Message</h2>
    <h1>
        @Convert.ToString(ViewBag.Delete)
    </h1>
    <p>
        To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">
            http://asp.net/mvc</a>.
        <br />
        <br />
        @Html.ActionLink("Delete record", "Delete");
        <br />
        <br />
    </p>

删除.cshtml

@model MvcApplication1.Models.RegisterModel
@{
    ViewBag.Title = "Delete";
}
<h2>
    Delete</h2>
<div>
    Are you sure you want to delete this?</div>
@using (Html.BeginForm())
{
    <p>
        <input type="submit" value="Delete" />
        |
    </p>
}

以上代码与您的代码相同,并且运行良好。请看一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2013-11-16
    • 2022-01-10
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多