【问题标题】:ASP.NET MVC Delete View -how does this workASP.NET MVC 删除视图 - 这是如何工作的
【发布时间】:2013-10-04 16:29:36
【问题描述】:

这是一个简单代码的简单问题,我只是想详细一点以确保我被理解。

为 ASP.NET MVC 应用程序生成的标准视图将有一个删除视图,其结尾如下 -

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

控制器方法是标准的 -

  public ActionResult Delete(int addressID)
    {
        Address address = db.Address.Find(addressID);
        if (address == null)
        {
            return HttpNotFound();
        }
        return View(address);
    }

    [HttpPost, ActionName("Delete")]
    [ValidateAntiForgeryToken]
    public ActionResult DeleteConfirmed(int addressID)
    {
        Address address = db.Address.Find(addressID);
        db.Address.Remove(address);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

生成的 HTML 看起来像 -

<form action="/Address/Delete?AddressID=2" method="post">    
<input name="__RequestVerificationToken" type="hidden" value="...snip..." />    <p>
        <input type="submit" value="Delete" /> |
        <a href="/Address">Back to List</a>
    </p>
</form>

如您所见,AddressID 包含在表单操作中,但我没有“做”任何事情来将其放在那里。我刚把模型打包了。

AddressID 如何进入表单操作?

【问题讨论】:

    标签: c# asp.net-mvc webforms


    【解决方案1】:

    这是由于您的方法签名产生的自动映射和 asp.net 路由。

    public ActionResult Delete(int addressID)
    public ActionResult DeleteConfirmed(int addressID)
    

    详情参见Controllers and Action Methods in ASP.NET MVC Applications自动映射Action-Method参数部分和路由ASP.NET Routing的详细信息

    【讨论】:

      【解决方案2】:

      MVC 在很大程度上是“基于约定的”。

      您确实提供了必要的信息,两个删除操作具有相同的 id 参数:

       public ActionResult Delete(int addressID)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-16
        • 1970-01-01
        相关资源
        最近更新 更多