25

我的观点之一是以下剃须刀代码:

@if (item.PMApproved != true) {
                    <input type="button" class="btnresetinvoice button" value="Reset" data-invoiceid="@item.InvoiceId" />
                }
                else {
                    <input type="button" class="btnresetinvoice button" value="Reset" data-invoiceid="@item.InvoiceId" disabled="disabled" />
                }

相当粗糙。基本上我想在特定条件下禁用该按钮,因为您可以从代码中解决问题。这样做更可取的方法是什么?

4

8 回答 8

20

由新的扩展方法辅助的以标记为中心的解决方案:

public static class HtmlExtensions
{
   public static HtmlString DisabledIf(this HtmlHelper html, bool condition)
   {
      return new HtmlString(condition ? "disabled=\"disabled\"" : "");
   }
}

在您看来,重用 wazoo:

<button type="reset" @Html.DisabledIf(someCondition)>Clear Fields</button>

很好地可重用,并且渲染的标记在空白方面非常干净:

<button type="reset" disabled="disabled">Clear Fields</button>
于 2013-11-16T01:37:13.850 回答
19

我不知道您使用的是什么语言,但您可以将您的if陈述移近两行之间的实际差异:

<input type="button" class="btnresetinvoice button" value="Reset"
       data-invoiceid="@item.InvoiceId"
       @{ if(item.PMApproved != true) { 
             @:disabled="disabled" 
        } }
/>
于 2012-04-15T21:36:27.733 回答
16

尝试这个

<button type="submit" disabled="@(!item.PMApproved)"></button>
于 2013-04-25T21:57:14.527 回答
3

帮手可以帮助:

public static class HtmlExtensions
{
    public static IHtmlString ApproveButton(this HtmlHelper htmlHelper, MyViewModel item)
    {
        var button = new TagBuilder("input");
        button.Attributes["type"] = "button";
        button.Attributes["value"] = "Reset";
        button.AddCssClass("btnresetinvoice");
        button.AddCssClass("button");
        button.Attributes["data-invoiceid"] = item.InvoiceId.ToString();
        if (item.PMApproved)
        {
            button.Attributes["disabled"] = "disabled";
        }
        return new HtmlString(button.ToString(TagRenderMode.SelfClosing));
    }
}

接着:

@Html.ApproveButton(item)
于 2012-04-16T06:45:51.113 回答
3

<input type="button" value="Reset" @{@((!item.PMApproved) ? null : new { disabled = "disabled" })}; />

不需要那些臃肿的代码,只要保持简单:-)

于 2013-07-15T20:46:14.653 回答
3
<button @(isEnabled ? null : "disabled")>Butt</button>
于 2016-04-25T08:40:49.243 回答
2

使用 asp.net mvc5 剃须刀:

@if(condition)
{
   <button data-toggle="collapse" data-target="#content">Details</button>
}
else
{
   <button disabled>Details</button>
}

它可以防止尝试从 DevTools 启用按钮,因为 DevTools 看不到剃刀

于 2019-09-30T06:15:05.170 回答
1

可能的简单方法:

<input type="button" @(item.PMApproved ? "disabled" : "") />
于 2019-07-25T14:16:11.800 回答