我编写了MVC5 Html扩展程序,以确定我屏幕上的按钮是否已禁用。
如下:
public static HtmlString IsButtonEnabled(this HtmlHelper html, bool buttonEnabled)
{
return new HtmlString(buttonEnabled ? "" : "disabled=\"disabled\"");
}
我的cshtml如下:
<div class="col-sm-12">
<a class="btn btn-default btn-block btn-metro" @Html.IsButtonEnabled(Model.IsMyButtonEnabled)
onclick="location.href='@Url.Action("Index","MyController")'">
<img src="~/images/myImage.png"> <span class="h2">My Button</span>
</a>
</div>
按钮按预期被禁用 - 但是,由于使用了onclick,它仍然可以被点击。是否可以将我的Html扩展与Html.ActionLink一起使用?
我意识到我可以很容易地使用页面上的一些js来防止点击 - 但是,如果可能的话,我想避免这种情况。
更新
扩展方法由屏幕上的10个不同按钮使用。其中一个按钮生成的标记如下:
<div class="col-sm-12">
<a class="btn btn-default btn-block btn-metro" disabled="disabled" href="/MyController/Index">
<img src="/myApp/images/myImage.png"> <span class="h2">My Button</span>
</a>
</div>
在下面的Stephen评论中我将点击更改为仅仅是href - 但是,即使按钮被禁用,我仍然可以点击它并且网站导航到指定的网址
答案 0 :(得分:2)
您可以将“a”标记更改为“button”标记。 URL标记不应被禁用。
<div class="col-sm-12">
<button class="btn btn-default btn-block btn-metro" @Html.IsButtonEnabled(Model.IsMyButtonEnabled)
onclick="location.href='@Url.Action("Index","MyController")'">
<img src="~/images/myImage.png"> <span class="h2">My Button</span>
</button>
</div>