MVC3 Как отключить / включить ActionLink - PullRequest
13 голосов
/ 24 марта 2012

У меня есть условие if и я хочу отключить или включить кнопку actionLink.

Как бы я это сделал?

@Html.ActionLink("Delete", "Delete", new { id = @Model.Id})

Спасибо

Ответы [ 4 ]

25 голосов
/ 24 марта 2012

Если на стороне сервера вы знаете, что ссылка недоступна, просто выдайте сообщение о том, что действие недоступно:

@if(condition)
{
   @Html.ActionLink("Delete", "Delete", new { id = @Model.Id})
}
else
{
   <text>Action is not available</text>
}

В противном случае вы можете отключить только ссылку с

Чтобы он работал в кросс-браузерном режиме: Должен ли тег HTML-привязки учитывать атрибут Disabled?

16 голосов
/ 24 марта 2012

Чтобы отключить тег "a", вы можете сделать:

@Html.ActionLink("Delete", "Delete", new { id = @Model.Id}, new { onclick = "javascript:return false;" })

Или вы можете использовать JQuery:

@Html.ActionLink("Delete", "Delete", new { id = @Model.Id}, new { class = "linkdisabled" })

CSS:

.linkdisabled{
   cursor:text;
}

JQuery:

$function(){
    $(".linkdisabled").click(function(){
        return false;
    }
}
3 голосов
/ 05 апреля 2012

Может быть, вы можете создать свой собственный пользовательский интерфейс типа MvcHtmlString

public static MvcHtmlString MyActionLink(this HtmlHelper helper, bool isClickable, string altText, RouteValueDictionary routeValues, object htmlAttributes = null) 
{
    // some logic with isClickale parameter here
    if(isClickable == false)
    {}

    return new MvcHtmlString(helper.ToHtmlString());
}

и используйте его в своем представлении

@Html.MyActionLink( // some parameters here )

Но я никогда не пробовал. Попробуйте найти что-нибудь о MvcHtmlString в Google.

0 голосов
/ 26 ноября 2018

Кто-то может найти это полезным, однажды я решил похожую проблему, превратив @ Html.ActionLink во вход <input type="submit" id = "submit" />, а затем вы заставили его работать как ссылка, используя javascript:

<script>
    $(document).ready(function () {
        $('#submit').click(function () {
            if(condition){
               //sth (not working as a link)
            }
            else
            {
                window.location.href = "/home/thanks"; //working as a link
            }
        })
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...