如何解决TagHelper 未呈现
我有一个标签助手,它似乎工作了一半?
我可以在进程覆盖中设置一个断点,它会命中它。但是,htmlContent
的设置似乎没有显示。
_ViewImports.cshtml
@using Gradebook
@addTagHelper *,Gradebook
@addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers
TextBoxInputHelper.cs
using System;
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc.TagHelpers;
using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace Gradebook.TagHelpers
{
// You may need to install the Microsoft.AspNetCore.Razor.Runtime package into your project
[HtmlTargetElement("TextBoxInput")]
public class TextBoxInputHelper : TagHelper
{
public string Id { get; set; }
public string Text { get; set; }
public bool Editable { get; set; }
public string Name { get; set; }
public string Label { get; set; } = "Control1";
public string HelpLabel { get; set; }
public bool required { get; set; }
public string ErrorText { get; set; }
public string ValidText { get; set; }
[HtmlAttributeName("asp-for")]
public ModelExpression Model { get; set; }
public override void Process(TagHelperContext context,TagHelperOutput output)
{
output.TagName = "TextBoxInput";
output.Attributes.SetAttribute("text",Text);
var id = GetControlId();
var requiredHtml = required ? "required" : "";
var errorHtml = EmptyOrUse(ErrorText,$"<div class='invalid-Feedback'>{ErrorText}</div>");
var validHtml = EmptyOrUse(ValidText,$"<div class='valid-Feedback'>{ValidText}</div>");
var html = $@"
<div class='col-md-4 mb-3'>
<label for='{id}'>{Label}</label>
<input type='text' class='form-control' id='{id}' placeholder='{HelpLabel}' value='{Text}' {requiredHtml}>
{errorHtml}
{validHtml}
</div>
";
var builder = new HtmlContentBuilder();
builder.SetHtmlContent(html);
output.Content.SetHtmlContent(builder);
}
private string EmptyOrUse(string value,string formatted) => string.IsNullOrWhiteSpace(value) ? string.Empty : formatted;
private string GetControlId()
{
if (!string.IsNullOrWhiteSpace(Id)) return Id;
return string.IsNullOrWhiteSpace(Model?.Name)
? string.IsNullOrWhiteSpace(Name)
? ""
: Name
: Model.Name;
}
}
}
使用标签的cshtml视图
<h2>title</h2>
<form>
<TextBoxInput name="User.LastName" Text="@Model.User.LastName" />
</form>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。