C# 根据条件禁用html按钮

C# 根据条件禁用html按钮,c#,asp.net-mvc,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 {

我正在尝试根据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>
}
@if(!item.Validated&&HttpContext.Current.User.IsInRole(“regionaladmin”)){
|
}
否则{
|
}
但这似乎相当粗糙


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

您可以使用三元表达式

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

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

标记:

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

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

@Html.ButtonForWithRole(x=>"regionaladmin")
一个扩展助手方法,它将为您编写所需的HTML,因此如下所示:

@Html.ButtonForWithRole(x=>"regionaladmin")
并将所有业务逻辑封装在扩展方法中


或者制作一个部分视图,也可以这样做,并使用部分视图,但他的小可怜

这是MVC,这样的东西还能应用吗?@AnonyMouse-我不知道这是MVC;你的标签当时只有html。在这种情况下,你应该看看西蒙·维托里的答案。