MVC3如何禁用/启用ActionLink

时间:2012-03-23 21:42:42

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

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

我该怎么做?

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

谢谢,

5 个答案:

答案 0 :(得分:25)

如果您在服务器端知道该链接不可用,那么只需呈现该操作不可用的消息:

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

否则您只能使用

禁用链接

使其跨浏览器工作:Should the HTML Anchor Tag Honor the Disabled Attribute?

答案 1 :(得分:16)

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

答案 2 :(得分: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 )

但我从未尝试过。尝试在Google上找到关于 MvcHtmlString 的内容。

答案 3 :(得分:0)

有人可能会觉得这很有用,我曾经通过将@ 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>

答案 4 :(得分:0)

聚会晚了一点,但万一其他人跌跌撞撞地走了…… 如果您的项目是自举的,则可以执行以下操作:

@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 })