【发布时间】:2018-06-11 06:42:40
【问题描述】:
我目前正在编写一个 asp.net core mvc 应用程序,并且我是 .net core 的新手。我对标签助手感到兴奋,我正试图用我的大脑围绕它们。我得到并制作了一对简单的,但我真正需要的是用bootstrap toggle替换<input type="checkbox">。
我已经能够使用我的自定义“布尔”标签助手来显示切换工作
<div class="form-group">
<label asp-for="IsBusiness"></label>
<boolean asp-for="IsBusiness" class="form-control"/>
<span asp-validation-for="IsBusiness" class="text-danger"></span>
</div>
但是我遇到的问题是当用户打开复选框/切换按钮然后单击保存时保存它的值。我收到一个错误:"The value 'on' is not valid for Login Is A Business?." 在表单验证中。
谁能帮我解决这个问题,这需要隐藏字段吗?
到目前为止,这是我的标签助手:
using Microsoft.AspNetCore.Mvc.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace Bidz4Hire.Utility.TagHelpers
{
// Creates <input type="checkbox" data-toggle="toggle" />
[HtmlTargetElement("boolean")]
public class BooleanTagHelper : InputTagHelper
{
public BooleanTagHelper(IHtmlGenerator generator) : base(generator)
{
}
public string AspFor { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "input";
output.TagMode = TagMode.SelfClosing;
output.Attributes.SetAttribute("type", "checkbox");
output.Attributes.SetAttribute("id", For.Name);
output.Attributes.SetAttribute("name", For.Name);
output.Attributes.SetAttribute("data-toggle", "toggle");
output.Attributes.SetAttribute("data-on", "Yes");
output.Attributes.SetAttribute("data-off", "No");
output.Attributes.SetAttribute("value", "true"); //so the checked value returned is "true" not "on"
if (Convert.ToBoolean(For.Model) == true) //check the model value
{
output.Attributes.SetAttribute("checked", "checked"); //turns the toggle to "Yes" initially
}
}
}
【问题讨论】:
标签: jquery asp.net twitter-bootstrap asp.net-core-tag-helpers