在ActionLink中使用Html扩展

时间:2017-04-19 10:04:55

标签: javascript c# html asp.net asp.net-mvc

我编写了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 - 但是,即使按钮被禁用,我仍然可以点击它并且网站导航到指定的网址

1 个答案:

答案 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>