删除 asp.net mvc 5 中的角色

Deleting roles in asp.net mvc 5

我正在尝试从我的数据库中删除一个角色,但它不起作用,当我单击删除按钮时,系统崩溃并且错误消息显示如下:

找不到资源。

描述:HTTP 404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。检查以下 URL 并确保拼写正确。

请求URL:/角色/删除

这是我RoleController.cs删除角色时使用的方法:

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

 public ActionResult Delete(string RoleName)
    {
        var thisRole = context.Roles.Where(r => r.Name.Equals(RoleName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();

        context.Roles.Remove(thisRole);
        context.SaveChanges();
        return RedirectToAction("Index");
    }

我的视图在我的 "Role" 文件夹中。这是使用的视图:

@{
    ViewBag.Title = "Index";
}

<h2>Roles Listing </h2>

@Html.ActionLink("Create New Role", "Create") | @Html.ActionLink("Manage User Role", "ManageUserRoles")
<hr />
<div>
    @foreach (var role in Model)
    {
        <p>
            <strong>@role.Name | </strong>
            <span onclick="return confirm('Are you sure to delete?')">
            <a href="/Roles/Delete?RoleName=@role.Name" class="delLink" style="color:red;">Delete</a>
            </span> |
            @Html.ActionLink("Edit", "Edit", new { roleName = @role.Name })
        </p>
    }
</div>

我能做什么?

编辑 (12/05/2015):

我的RouteConfig.cs是这样的:

    public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

为您的操作使用 HttpPost 和 HttpGet 属性

[HttpGet]
public ActionResult Delete()
{
    return View();
}

[HttpPost]
public ActionResult Delete(string RoleName)
{
    var thisRole = context.Roles.Where(r => r.Name.Equals(RoleName, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();

    context.Roles.Remove(thisRole);
    context.SaveChanges();
    return RedirectToAction("Index");
}

[HttpPost] 属性告诉路由引擎将任何 POST 请求发送到该操作方法。

错误信息表明您的路由配置不正确。

你为它创建路线了吗?

看着它,我猜这里..你的 url 实际上应该是 "Role/Delete" 在你的超链接上,因为你试图通过 "Roles/Delete" 找到它可能不会找到它。

没有看到你的 RouteConfig.cs 很难说。

编辑。

而不是这个:-

<a href="/Roles/Delete?RoleName=@role.Name" class="delLink" style="color:red;">Delete</a>

试试这个

 <a href='@Url.Action("Delete","Role", new { rolename = @Model.Name })' class="delLink" style="color:red;">Delete</a>