如何在使用@ Html.Actionlink重定向到页面之前检查一些条件

时间:2012-10-26 06:03:30

标签: asp.net-mvc-3 html.actionlink

我使用@ Html.ActionLink移动到一个表单。我想在移动到该页面之前检查一些条件。条件如果用户具有该(编辑)页面的访问权限,则只有他可以重定向到编辑页面。

我正在尝试使用jquery,但它只是默认重定向到编辑页面而不调用jquery事件。

怎么做?

3 个答案:

答案 0 :(得分:0)

使用Jquery

 <a href="@Url.Action("NewLaunches", "Updates")" style="cursor:pointer" id="deleteLink">Delete</a>

$(document).ready(function(){
  $("#deleteLink").click(function(event){
    event.preventDefault();
    bool isallowed= // Logic for finding access permission
    if(isallowed)
    {
    var url = $(this).attr("href"); // picking up the url
    document.location.href=url;
    }
    });});

答案 1 :(得分:0)

是的,你可以这样做。

您说您正在使用@Html.ActionLink在表单之间移动。所以我假设你的一个ActionLink看起来像这样......

@Html.ActionLink("Edit","Home")

并且您的控制器可能看起来像这样......

public class HomeController : Controller
{
    public ActionResult Edit()
    {        
        return View();
    }

}

在编辑操作中,您可以检查所需的访问权限,例如:

public class HomeController : Controller
{
    public ActionResult Edit()
    {       
        if(Request.IsAuthenticated && SomeOtherCondition()) {
        {
            // if all ok, then forward to Edit page
            return View();
        }
        else{
            // send back to home.
            return("Index");
        }
    }

}

P.S:我强烈建议您在服务器端而不是客户端(jquery)进行访问权限验证。

答案 2 :(得分:0)

这是服务器逻辑,而不是客户端,但如果你使用一些带有密钥,uid等的客户端安全算法,并通过ajax与服务器进行主动通信,它将带给你一些优势。我建议你:返回RedirectToAction,抛出异常,返回403状态代码,检查服务器上的权限,不要渲染此链接等。@ name示例将允许用户在浏览器中使用禁用的javascript导航。