Как проверить некоторые критерии перед перенаправлением на страницу с помощью @Html.Actionlink

я использовал @Html.ActionLink для перехода к одной форме. Я хочу проверить некоторые условия, прежде чем переходить на эту страницу. такое условие, как если у пользователя есть права доступа к этой (редактировать) странице, только он может перенаправить на страницу редактирования.

Я пытаюсь использовать jquery, но по умолчанию это только перенаправление на страницу редактирования без вызова события jquery.

Как это сделать?


person Priyanka    schedule 26.10.2012    source источник


Ответы (3)


Использование 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;
    }
    });});
person amesh    schedule 26.10.2012
comment
Проверка прав доступа и предоставление разрешения на стороне клиента не рекомендуется. - person amesh; 26.10.2012

Да, вы можете это сделать.

Вы сказали, что используете @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).

person Yasser Shaikh    schedule 26.10.2012

Это серверная логика, а не клиентская, хотя если вы используете некоторые клиентские алгоритмы безопасности с секретными ключами, uid и т. д., с активной связью с сервером по ajax, это даст вам некоторые преимущества. Я бы порекомендовал вам: вернуть RedirectToAction, генерировать исключения, возвращать код состояния 403, проверять разрешения на сервере и не отображать эти ссылки и т. д. Пример @amesh позволит пользователю перемещаться с отключенным javascript в браузере.

person webdeveloper    schedule 26.10.2012