删除 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>
我正在尝试从我的数据库中删除一个角色,但它不起作用,当我单击删除按钮时,系统崩溃并且错误消息显示如下:
找不到资源。
描述: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>