标签: tag-helpers

如何将在TagHelper处理方法中生成的脚本呈现到页面底部而不是tag元素旁边?

我在TagHelper类的处理方法中生成脚本,如下所示

[TargetElement("MyTag")]
    public Class MYClass: TagHelper{
      public override void Process(TagHelperContext context, TagHelperOutput output)
        {
StringBuilder builder = new StringBuilder();

                builder.Append("<script>");
                builder.Append("//some javascript codes here);
                builder.Append("</script>");
                output.Content.Append(builder.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)

现在,它会将脚本放置在tag元素旁边,作为其兄弟。

我需要将脚本放在正文部分的末尾。

tag-helpers asp.net-core

5
推荐指数
2
解决办法
4018
查看次数

如何编写包含其他标记帮助程序的自定义ASP.NET 5标记帮助程序

我一直在谷歌上看标签上的例子,但找不到我正在寻找的任何例子.

我有以下代码:

<div class="form-group">
    <label asp-for="PersonName" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <input asp-for="PersonName" class="form-control" />
        <span asp-validation-for="PersonName" class="text-danger"></span>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我要做的是用类似的东西替换它

<bootstraprow asp-for="PersonName"></bootstraprow>
Run Code Online (Sandbox Code Playgroud)

但是,我不确定要编写包含其他标记的taghelper

  1. 可能吗?
  2. 如果可能的话,提供上面的代码示例

编辑:这与在自定义标记中存储变量不同,但我想调用其他自定义标记或现有标记.

asp.net-core-mvc tag-helpers asp.net-core

5
推荐指数
1
解决办法
1506
查看次数

TagHelpers 根据验证属性为 LabelTagHelper 添加自定义类 [必需]

在 Core MVC 中,有一个新的概念作为标签助手。

我们之前可以创建自定义 html 帮助程序,以根据验证数据注释(例如 [Required])附加一些类。

作为 TagHelpers arq 相当新的领域,我找不到足够的资源来实现以下目标:

这是视图模型:

    [Required]
    public Gender Gender { get; set; }
Run Code Online (Sandbox Code Playgroud)

看法:

<label class="control-label col-md-3 required" asp-for="Gender"></label>
Run Code Online (Sandbox Code Playgroud)

css:

.required:after {
content: "*";
font-weight: bold;
color: red;
}
Run Code Online (Sandbox Code Playgroud)

输出: 在此处输入图片说明

但我不想在标签中手动添加所需的 css 类。不知何故,我应该能够扩展 LabelTagHelper 以读取模型数据注释,如果它具有 [Required] 则在标签元素中添加所需的类。

谢谢,

css asp.net-mvc asp.net-core-mvc tag-helpers

5
推荐指数
1
解决办法
1655
查看次数

如何创建TagHelper谁的值是一个模型属性(不使用@Model)?

Tag Helper是Asp.Net Core的一个很好的功能.我创建了几个标记助手,它们可以提供超级帮助.

现在我想尝试一些更高级的东西.标记辅助属性具有以属性值是模型属性的方式创建的能力.

这方面的例子如下:

 //model
 public class MyModel{
      public int MyField {get;set;} = 10;
 }



  //in the view
  @model MyModel
   ...
  <input asp-for="MyField" />
Run Code Online (Sandbox Code Playgroud)

在上面的示例asp-for中,input标记定向的标记帮助程序引用模型中的属性.该文件说,

asp-for属性值是ModelExpression和lambda表达式的右侧.因此,asp-for ="Property1"在生成的代码中变为m => m.Property1,这就是为什么你不需要使用模型前缀的原因.

所以这很酷,并且相同的文档似乎称之为"表达式名称".

如何在我自己的自定义标记帮助器中创建这样的属性?

c# asp.net-core-mvc tag-helpers

5
推荐指数
1
解决办法
2209
查看次数

如何让asp-for输入标签帮助器生成camelCase名称?

如果我有这样的视图模型:

 public class MyModel{
      public DateTime? StartDate {get;set;}
 }
Run Code Online (Sandbox Code Playgroud)

在视图上,输入标记与asp-for标记助手一起使用,如下所示:

<input asp-for="StartDate" />
Run Code Online (Sandbox Code Playgroud)

由此生成的默认html是

 <input type="datetime" id="StartDate" name="StartDate" value="" />
Run Code Online (Sandbox Code Playgroud)

但我希望它生成的是html,如下所示:

 <input type="datetime" id="startDate" name="startDate" value="" />
Run Code Online (Sandbox Code Playgroud)

如何让asp-for输入标签帮助器生成像上面这样的驼峰案例名称,不必使我的模型属性为camelCase?

html asp.net-core-mvc tag-helpers

5
推荐指数
2
解决办法
1512
查看次数

在作为标签助手调用的视图组件中,我们如何访问内部 HTML?

在标签助手中,我们可以访问标签内部的 HTML。

<!-- Index.cshtml -->  
<my-first>
    This is the original Inner HTML from the *.cshtml file.
</my-first>

// MyFirstTagHelper.cs > ProcessAsync
var childContent = await output.GetChildContentAsync();
var innerHtml = childContent.GetContent();
Run Code Online (Sandbox Code Playgroud)

如果我们调用视图组件作为标签助手,我们如何访问内部 HTML?

<vc:my-first>
    This is the original Inner HTML from the *.cshtml file.
</vc:my-first>

// MyFirstViewComponent.cs > InvokeAsync()
var innerHtml = DoMagic();
Run Code Online (Sandbox Code Playgroud)

一些进一步的想法:

我很欣赏我们可以通过 HTML 属性将任意内容传递给视图组件。但是,在文本量非常大的情况下,这可能变得不切实际,在这种情况下,内部 HTML 会更具可读性并且具有更好的工具支持。

有些人可能还会说,“那么为什么不直接使用标签助手呢?” 好吧,我们想要将视图与标签助手关联起来,而标签助手不支持视图;相反,标签助手要求我们以编程方式构建所有 HTML。

所以我们陷入了困境。一方面,我们想要一个标签助手,但它们不支持视图;另一方面,我们可以使用视图组件作为标签助手,但视图组件可能不允许我们访问内部 HTML。

asp.net-core-mvc tag-helpers asp.net-core asp.net-core-mvc-2.0 asp.net-core-viewcomponent

5
推荐指数
1
解决办法
2480
查看次数

如何在for循环中设置asp-for

我有一个 for 循环来在表单上生成字段。

如何根据当前索引设置asp-for的值?

<label asp-for=@("Value" + i) class="control-label"></label>不起作用。

razor tag-helpers asp.net-core asp.net-core-tag-helpers

5
推荐指数
1
解决办法
1万
查看次数

Net Core:在返回 Html 的自定义标记帮助程序中使用标记帮助程序?

我正在尝试解决这个问题,除了.Net Core 2。

我可以在返回 html 的自定义标记帮助程序中使用标记帮助程序吗?

“我想在标签助手中使用标签助手。我环顾四周,找不到其他人尝试这样做,我是否使用了糟糕的约定,或者我是否缺少文档?

前任。标签助手 A 输出包含另一个标签助手的 HTML。”

我该如何解决下面的编译错误?

[HtmlTargetElement("tag-name")]
public class RazorTagHelper : TagHelper
{
    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("<a asp-action=\"Home\" ");
        output.Content.SetHtmlContent(sb.ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让我从 C# 处理标签助手?或者使用标签助手重新处理输出 HTML?”

尝试了泰勒·马伦的这个标记解决方案:

var anchorTagHelper = new AnchorTagHelper
{
    Action = "Home",
};

var anchorOutput = new TagHelperOutput("a", new TagHelperAttributeList(), (useCachedResult, encoder) => new HtmlString());
var anchorContext = new TagHelperContext(
    new TagHelperAttributeList(new[] { new TagHelperAttribute("asp-action", new HtmlString("Home")) }),
    new Dictionary<object, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core-mvc .net-core tag-helpers asp.net-core

5
推荐指数
1
解决办法
2033
查看次数

如何在 taghelper process 方法中获取整个视图模型?

是否可以在标签帮助器 Process 方法(.NET Core MVC)中获取整个视图模型?

tag-helpers asp.net-core asp.net-core-tag-helpers

5
推荐指数
1
解决办法
1160
查看次数

asp-for 标签帮助器功能

我知道asp-foran 的标签助手<input>设置name属性,以便它可以绑定到模型类。例如asp-for="Movie.Year",当从 POST 请求检索数据时...

在另一种情况下(可能是 GET 请求):还从模型类实例中asp-for提取每个s 值,并在通过 PageModel 派生类实例化后基于它填充属性。<input>value

例如

<input asp-for="Movie.Price" class="form-control" />
Run Code Online (Sandbox Code Playgroud)

asp.net razor tag-helpers asp.net-core

5
推荐指数
0
解决办法
1万
查看次数