根据条件禁用HTML按钮

本文关键字:HTML 按钮 条件 | 更新日期: 2023-09-27 18:14:40

我试图禁用一个按钮基于一个条件在我的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>
}

但这看起来相当粗糙。

有谁能建议一个更好的方法来减少行数吗?

根据条件禁用HTML按钮

可以使用三元表达式

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

您正在使用ASP。净,不是吗?为什么不跳过内联代码并在.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");
}

这不是很好,如果你只有20页,这意味着你将在其中编写这些代码,你应该创建以下内容之一:

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

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

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

或者创建一个局部视图它也会做同样的事情并使用局部视图但是他的小可怜的