限制为特定视图的ASP.NET MVC控制器操作
问题描述:
是否有一种方法可以将控制器操作限制为只能从特定视图访问?我有一个在我的数据库查询实体的详细信息页面,基本上由一个按钮和一个简单的JS确认提示我想改变这个对象的一些属性,并将其保存回数据库。我开发了一个控制器操作方法来完成这个工作,但我不知道如何限制对它的访问,所以用户不能通过在浏览器中传递一个特定的URL来(有意)修改实体。我希望只能通过按下指定的按钮在此特定的详细信息页面上访问此操作。 我尝试使用[ChildActionOnly]
,但它只能从其他操作方法访问,而不是视图。限制为特定视图的ASP.NET MVC控制器操作
谢谢你的帮助。
答
感谢Stephen Muecke的评论我设法让它工作。
按钮是一个简单的Action Link
,其重定向到所述受限控制器动作:
public ActionResult ReturnBook(int id)
{
if (Request.UrlReferrer == null)
{
return HttpNotFound();
}
//code
}
的方法检查,如果有任何UrlReferrer
可言。在浏览器中输入操作url会导致引用者为空。 如果通过视图ActionLink
进行呼叫,则UrlReferrer
不为空,并且可以选择检查其属性Request.UrlReferrer.AbsolutePath
并将其与只能进行调用的期望url进行比较。在我的情况下,因为我没有在我的代码中的任何其他地方调用此方法,所以我只停留在null/notnull
条件。
您可以使用Request.UrlReferrer来获取引荐网址(如果网址不正确,也可能返回BadRequest的错误页面) –
谢谢您,这是解决问题的正确方向。 – Dandry