在asp.net核心视图中有条件地渲染禁用按钮

时间:2017-11-02 13:05:20

标签: asp.net-core asp.net-core-mvc

我的视图中有一个按钮,我希望根据特定条件禁用该按钮。以下是我的观点:

@{
   var myCondition = false;
   myCondition = //set condtion here
}

<input type="submit" value="Create" class=" btn btn-primary" />

因此,根据myCondition,我想禁用/启用我的按钮。

我可以这样做:

 @if(myCondition)
  {
     <input type="submit" value="Create" disabled="disabled" class=" btn btn-primary" />
  }
 else
 {
    //enable it here
 }

在.net核心中是否有任何优雅的方法可以做到这一点。我们可以在这里使用一些htmlextensions。如果有人可以给我一个例子,请

赞赏输入。

2 个答案:

答案 0 :(得分:4)

如果您不想在视图中有条件地渲染按钮,可以构建一个标记助手来执行此操作。

[HtmlTargetElement("button")]
public class MyDisablableButton : TagHelper
{      
    [HtmlAttributeName("asp-is-disabled")]
    public bool IsDisabled { set; get; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        if (IsDisabled)
        {
            var d = new TagHelperAttribute("disabled", "disabled");
            output.Attributes.Add(d);
        }
        base.Process(context, output);
    }
}

现在要使用此自定义标记帮助器,您需要在addTagHelper中调用_ViewImports.cshtml方法。

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, YourAssemblyNameHere

现在您可以在

等视图中使用它
<button asp-is-disabled="true">Save</button>
<button asp-is-disabled="false">Save</button>
<button asp-is-disabled="@yourBooleanVariable">Save</button>

答案 1 :(得分:3)

您可以创建html帮助器:

CredentialsContainer

然后在你看来:

public static class HtmlExtensions
{
        public static IHtmlContent DisabledIf(this IHtmlHelper htmlHelper, 
                                              bool condition)
        => new HtmlString(condition ? "disabled=\"disabled\"" : "");
}