【发布时间】:2012-04-08 11:08:37
【问题描述】:
我有 if 条件,我想禁用或启用我的 actionLink 按钮。
我该怎么做?
@Html.ActionLink("Delete", "Delete", new { id = @Model.Id})
谢谢,
【问题讨论】:
我有 if 条件,我想禁用或启用我的 actionLink 按钮。
我该怎么做?
@Html.ActionLink("Delete", "Delete", new { id = @Model.Id})
谢谢,
【问题讨论】:
如果您在服务器端知道该链接不可用,则只需呈现该操作不可用的消息:
@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?
【讨论】:
要禁用“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;
}
}
【讨论】:
也许您可以创建自己的 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 )
但我从未尝试过。尝试在 Google 上查找有关 MvcHtmlString 的信息。
【讨论】:
聚会有点晚了,但万一其他人偶然发现这个...... 如果你的项目是自举的,你可以这样做:
@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" : "" })
【讨论】:
有人可能会觉得这很有用,我曾经通过将 @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>
【讨论】: