我正在尝试根据我的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>
}
但这看起来相当粗糙。
任何人都可以提出一个更好的方法来减少这些行吗?
答案 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")
并将所有业务逻辑封装在您的扩展方法
中或者制作一个部分视图来做同样的事情并使用局部视图,但他的小穷人