MVC3 Как отключить/включить ActionLink

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

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

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

Спасибо,

Ответ 1

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

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

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

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

Ответ 2

Чтобы отключить тег "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

Возможно, вы можете создать свой собственный пользовательский интерфейс типа 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.