ASP.NET MVC 控制器操作仅限于特定视图
ASP.NET MVC controller action restricted to a specific view
有没有办法限制只能从特定视图访问控制器操作?我的数据库中有一个查询实体的详细信息页面,基本上是通过一个按钮和一个简单的 JS 确认提示,我想更改此对象的一些属性并将其保存回数据库。我开发了一个控制器操作方法来完成这项工作,但我不知道如何限制对它的访问,因此用户不能(无意)通过在浏览器中传递特定的 url 来修改实体。我希望只能通过按指定按钮在此特定详细信息页面上访问该操作。
我尝试使用 [ChildActionOnly]
但它只能从另一个操作方法访问,而不是视图。
感谢您的帮助。
多亏了 Stephen Muecke 的评论,我才让它运行起来。
该按钮是一个简单的 Action Link
,它重定向到受限的控制器操作:
public ActionResult ReturnBook(int id)
{
if (Request.UrlReferrer == null)
{
return HttpNotFound();
}
//code
}
该方法检查是否存在 UrlReferrer
。在浏览器中键入 action url 会导致 referrer 为空。
如果调用是由 ActionLink
从视图进行的,则 UrlReferrer
不为空,并且可以选择检查其 属性 Request.UrlReferrer.AbsolutePath
并将其与所需的 url 进行比较,只能从中进行调用。在我的例子中,因为我没有在我的代码中的任何其他地方调用这个方法,所以我只使用 null/notnull
条件。
有没有办法限制只能从特定视图访问控制器操作?我的数据库中有一个查询实体的详细信息页面,基本上是通过一个按钮和一个简单的 JS 确认提示,我想更改此对象的一些属性并将其保存回数据库。我开发了一个控制器操作方法来完成这项工作,但我不知道如何限制对它的访问,因此用户不能(无意)通过在浏览器中传递特定的 url 来修改实体。我希望只能通过按指定按钮在此特定详细信息页面上访问该操作。
我尝试使用 [ChildActionOnly]
但它只能从另一个操作方法访问,而不是视图。
感谢您的帮助。
多亏了 Stephen Muecke 的评论,我才让它运行起来。
该按钮是一个简单的 Action Link
,它重定向到受限的控制器操作:
public ActionResult ReturnBook(int id)
{
if (Request.UrlReferrer == null)
{
return HttpNotFound();
}
//code
}
该方法检查是否存在 UrlReferrer
。在浏览器中键入 action url 会导致 referrer 为空。
如果调用是由 ActionLink
从视图进行的,则 UrlReferrer
不为空,并且可以选择检查其 属性 Request.UrlReferrer.AbsolutePath
并将其与所需的 url 进行比较,只能从中进行调用。在我的例子中,因为我没有在我的代码中的任何其他地方调用这个方法,所以我只使用 null/notnull
条件。