25

私の見解の1つに、次のかみそりコードがあります。

@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ステートメントを2行の実際の違いに近づけることができる場合があります。

<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 に答える