Asp.net mvc MVC3如何禁用/启用ActionLink

Asp.net mvc MVC3如何禁用/启用ActionLink,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我有if条件,我想禁用或启用我的actionLink按钮 我该怎么做 @Html.ActionLink(“删除”,“删除”,新建{id=@Model.id}) 谢谢,要禁用“a”标记,您可以执行以下操作: @Html.ActionLink("Delete", "Delete", new { id = @Model.Id}, new { onclick = "javascript:return false;" }) 也可以使用JQuery: @Html.ActionLink("Delete",

我有if条件,我想禁用或启用我的actionLink按钮

我该怎么做

@Html.ActionLink(“删除”,“删除”,新建{id=@Model.id})

谢谢,

要禁用“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:

JQuery:

$function(){
    $(".linkdisabled").click(function(){
        return false;
    }
}

如果您知道服务器端的链接不可用,则只需呈现一条消息,说明该操作不可用:

@if(condition)
{
   @Html.ActionLink("Delete", "Delete", new { id = @Model.Id})
}
else
{
   <text>Action is not available</text>
}
@if(条件)
{
@ActionLink(“删除”,“删除”,新的{id=@Model.id})
}
其他的
{
操作不可用
}
否则,只能禁用具有的链接

  • CSS:
  • JS:

要使其跨浏览器工作:

也许您可以创建自己的MvcHtmlString类型的UI

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的信息。

有人可能会觉得这很有用,我曾经通过将@Html.ActionLink转换为输入解决了一个类似的问题
然后使用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>

$(文档).ready(函数(){
$(“#提交”)。单击(函数(){
如果(条件){
//某物(不作为链接)
}
其他的
{
window.location.href=“/home/thank”//作为链接使用
}
})

派对有点晚了,但万一有人无意中发现。。。 如果项目已启动,则可以执行以下操作:

@Html.ActionLink("Delete", "Delete", new { id = @Model.Id}, new { @class = "btn btn-default disabled" })


您好,很好的解决方案。但是有没有办法使文本不可点击。现在它显示为链接,但它不会出现在任何地方。有没有办法改变它的外观。谢谢您可以添加样式属性或使用css类来做到这一点:谢谢!很好的解决方案!将true/false添加到@class对我不起作用。我通过添加字符串对它进行了测试“禁用”或添加空字符串时,按钮应该是启用的,它工作正常“补充说这将是我首选的解决方案,我会投票给这个答案。@Mariusz我编辑了我答案的第二部分,只是在我写的时候没有完成这个想法。这就是你想要的吗?没错。谢谢并投票给你的答案:-)
@Html.ActionLink("Delete", "Delete", new { id = @Model.Id}, new { @class = "btn btn-default disabled" })
@{
    bool btnDisabled = // Logic here;
}

@Html.ActionLink("Delete", "Delete", new { id = @Model.Id}, new { @class = "btn btn-default " + @btnDisabled ? "disabled" : "" })