我目前正在与Crud合作。但是我可以破解这个。我正在尝试做到这一点,以便您只有在登录时才能删除。
我尝试添加if (User.Identity.IsAuthenticated)
,但这不起作用,它在您输入删除页面后将我发送到登录页面。这是我的控制器:
public ActionResult _RemoveItems()
{
var Items = db.CreatePosts.ToList();
return PartialView(Items);
}
[HttpPost]
public ActionResult _RemoveItem(int Id)
{
if (HttpContext.User.Identity.IsAuthenticated)
{
CreatePost CreatePost = db.CreatePosts.Find(Id);
if (CreatePost != null)
{
db.CreatePosts.Remove(CreatePost);
db.SaveChanges();
}
}
return RedirectToAction("Index", "Manage");
}
这是我的删除
@Html.ActionLink("Slet", "_RemoveItem", "Home", new { @id = item.Id }, new { @class = "btn btn-danger" })
我做错了什么,因为我无法做到这一点,所以您需要登录才能输入页面_RemoveItem
您可以在方法上方的一行中使用[Authorize]
属性:
[Authorize]
public ActionResult _RemoveItems()
这将要求任何访问该方法登录的人,期间。
您还可以向授权属性添加更多参数,以管理允许哪些角色等等。
如:
[Authorize(Roles="SpecialRole, OtherRole")]
在这种情况下,该方法仅允许用户扮演"特殊"角色和/或"其他"角色,或者在两个角色中都可以访问。
如果您想在视图上获取删除按钮消失,则必须做一些额外的工作才能实现:
在显示您的视图的控制器操作中,您是否需要以某种方式通过用户登录(您是否可以在视图中执行此操作,但您不应该这样做)。您可以使用ViewBag轻松执行此操作,也可以修改模型以包含一个属性,哪种适合您最适合您的属性。
[HttpGet] public void Index() {
ViewBag.IsLoggedIn = HttpContext.User.Identity.IsAuthenticated;
}
在您的视图中,
@(ViewBag.IsLoggedIn == false ? "" : Html.ActionLink("Slet", "_RemoveItem", "Home", new { @id = item.Id }, new { @class = "btn btn-danger" }))
it 似乎您已经确保它们已登录,我做出了这个答案,因为这是您根据您对评论的[潜在误解]想要的。