问题描述
我有一个标签助手,它似乎工作了一半?
我可以在进程覆盖中设置一个断点,它会命中它。但是,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 (将#修改为@)