根据条件禁用html按钮

时间:2011-11-14 20:21:33

标签: c# asp.net-mvc

我正在尝试根据我的MVC应用中的条件禁用按钮。

我想出了:

@if (!item.Validated && HttpContext.Current.User.IsInRole("regionaladmin")) {
  <input type="button" class="btnvalidate" value="Validate" data-invoiceid=@item.InvoiceId /> <span>|</span>
}
else {
  <input type="button" class="btnvalidate" value="Validate" data-invoiceid=@item.InvoiceId disabled = "disabled" /> <span>|</span>
}

但这看起来相当粗糙。

任何人都可以提出一个更好的方法来减少这些行吗?

3 个答案:

答案 0 :(得分:2)

您可以使用三元表达式

<input type="button" class="btnvalidate" value="Validate" data-invoiceid=@item.InvoiceId
@( (!item.Validated && HttpContext.Current.User.IsInRole("regionaladmin")) ? "disabled" : "")
> <span>|</span>

答案 1 :(得分:2)

你正在使用ASP.NET,不是吗?为什么不跳过内联代码并在.cs文件中执行?

标记:

<input type="button" ID="validate" runat="server" class="btnvalidate" value="Validate" data-invoiceid=@item.InvoiceId />

代码背后:

if (!item.Validated && HttpContext.Current.User.IsInRole("regionaladmin")) {
    validate.Attributes.Add("disabled","disabled");
}

答案 2 :(得分:0)

这不好,如果您只有20页意味着您将在其中编写此代码,则应创建以下内容:

一个扩展帮助器方法,它将为您编写所需的HTML,因此它将如下所示:

@Html.ButtonForWithRole(x=>"regionaladmin")

并将所有业务逻辑封装在您的扩展方法

或者制作一个部分视图来做同样的事情并使用局部视图,但他的小穷人