我的视图中有一个按钮,我希望根据特定条件禁用该按钮。以下是我的观点:
@{
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。如果有人可以给我一个例子,请
赞赏输入。
答案 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\"" : "");
}