标签: tag-helpers

标记助手中的可选属性

我有一个标签助手,沿着以下几行:

[HtmlTargetElement("foo", Attributes = "bar")]
public class FooTagHelper : TagHelper

[HtmlAttributeName("bar")]
public bool Bar { get; set; }
Run Code Online (Sandbox Code Playgroud)

当我将以下内容添加到视图时,标记帮助程序按预期处理目标:

<foo bar="true"></foo>
Run Code Online (Sandbox Code Playgroud)

但是,我想做的是制作bar可选的,例如,<foo></foo>如果它已被取消,我希望它默认为false

这可能吗?该HtmlTargetElementAttribute.Attributes属性的源代码注释似乎表明不是:

//摘要:
一个逗号分隔的System.String属性名称,HTML元素必须包含
这些属性名称才能运行Microsoft.AspNet.Razor.TagHelpers.ITagHelper.*属性名称末尾的*用作前缀匹配.

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

2
推荐指数
1
解决办法
2345
查看次数

如何将输入元素集中在Asp.Net Core(MVC6)视图上

您是否知道在Asp.Net Core的剃刀视图上为焦点添加焦点的方法.我知道这可以通过javascript完成,但是还有一个标签吗?在input元素或包含表单元素上.

提前致谢

SørenRokkedal

forms asp.net-core-mvc tag-helpers

2
推荐指数
1
解决办法
1925
查看次数

在标签助手中获取属性名称

ASP.NET Core引入了自定义标记帮助器,可以在如下视图中使用:

<country-select value="CountryCode"  />
Run Code Online (Sandbox Code Playgroud)

但是,我不明白如何在类中获取模型属性名称:

public class CountrySelectTagHelper : TagHelper
{
    [HtmlAttributeName("value")]
    public string Value { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
       ...
       // Should return property name, which is "CountryCode" in the above example
       var propertyName = ???();  
       base.Process(context, output);
    }
}
Run Code Online (Sandbox Code Playgroud)

在以前的版本中,我可以使用ModelMetadata以下命令执行此操作:

var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
var property = metadata.PropertyName; // return "CountryCode"
Run Code Online (Sandbox Code Playgroud)

如何在新的ASP.NET标签助手中执行相同操作?

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

2
推荐指数
1
解决办法
1414
查看次数

Asp.Net 5 TagHelper 模型状态绑定

我正在尝试制作一个绑定到当前 ModelState 的自定义 TagHelper,就像

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

我想从我的自定义 TagHelper 类中进行一些 ModelState 验证。

尝试搜索Github存储库,但无法查明这一确切行为。有人找到办法做到这一点吗?

谢谢!

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

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

asp.net vnext标签助手选择选项不起作用

Pl帮我解决以下问题..

在视图中,

  <select asp-for="Frequency" asp-items=@ViewBag.Freqs class="form-control" />
Run Code Online (Sandbox Code Playgroud)

在控制器中,

SelectListItem[] items = {  new SelectListItem() { Text = "item 1", Value= "Nrk" },
                            new SelectListItem() { Text = "item 2", Value= "Nrk 2" }
                            };

        ViewBag.Freqs = items;
        return View();
Run Code Online (Sandbox Code Playgroud)

但我没有在下拉框中找到列表.

asp.net-core-mvc tag-helpers

1
推荐指数
2
解决办法
2152
查看次数

设置不编码的 ASP.NET Core TagHelper 属性

我想将该integrity属性添加到我的标签助手中的脚本标签中。它包含一个+我不想编码的标志。

<script integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7"></script>
Run Code Online (Sandbox Code Playgroud)

这是我的标签助手:

[HtmlTargetElement(Attributes = "script")]
public class MyTagHelper : TagHelper
{
    public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
        // Omitted...

        output.Attributes["integrity"] = "sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7";
    }
}
Run Code Online (Sandbox Code Playgroud)

这是上述代码的输出,其中+已替换为&#x2B;

<script integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky&#x2B;er10rcgNR/VqsVpcw&#x2B;ThHmYcwiB1pbOxEbzJr7"></script>
Run Code Online (Sandbox Code Playgroud)

我怎样才能阻止这种编码的发生?

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

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

Razor Tag助手在Pre-ASP.NET核心MVC应用程序中

在ASP.NET Core中有一个名为"tag helpers"的新功能,我可以在其中替换我的剃刀语法

@Html.TextBoxFor(o => o.FirstName, new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)

有点自然的东西

<input type="text" asp-for="FirstName" class="form-control" />
Run Code Online (Sandbox Code Playgroud)
  • Pre-ASP.NET Core中是否提供此功能?
  • 如果没有,它会来到Pre-ASP.NET Core吗?

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

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

区域的ASP.NET Vnext标记助手

我可以<a href='/Area/Controller/action'> </a> 在asp.net vnext中使用,但只是想知道我们是否可以使用标记助手 <a asp-controller="ControllerName" asp-action="ActionName" asp-area="AreaName">来重定向到该区域中的特定文件.

是否有人会指导我如何使用标签助手重定向到区域中的文件.

asp.net-mvc razor asp.net-mvc-5 tag-helpers

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

ASP.NET Core:标记助手“选择”为空

我需要一个带有select元素的视图。我有以下VM类:

public class EditTicketVM
{
    public EditTicketVM()
    {
        Statuses = new SelectList(new List<SelectListItem>{
            new SelectListItem("Open", "open"),
            new SelectListItem("Pending", "pending"),
            new SelectListItem("Hold", "hold"),
            new SelectListItem("Solved", "solved"),
            new SelectListItem("Closed", "closed"),
        });

    }

    public string Description { get; set; }
    public string Subject { get; set; }
    public string Status { get; set; }

    public SelectList Statuses { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并选择页面上的元素:

<select asp-for="Status" class="form-control" asp-items="Model.Statuses" />
Run Code Online (Sandbox Code Playgroud)

但是在结果页面上,此元素为空:

在此处输入图片说明

我的代码有什么不正确?

html c# select tag-helpers asp.net-core

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

如何阻止Tag Helper渲染并在html代码标签中显示它?

我想阻止<partial>使用 asp.net core 帮助程序的渲染标记。我的代码是:

<pre>
    <code class="language-html">
        <partial name="~/Breadcrumbs/BreadcrumbTemplate.cshtml" model="breadcrumbs" />
    </code>
</pre>
Run Code Online (Sandbox Code Playgroud)

我需要打印完全相同的代码,无需渲染。提前致谢。

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

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

asp-route- *中的奇怪行为

在index.cshtml中,我使用锚标记助手作为

<a asp-action="Edit" asp-route-id="@Model.Id" asp-route-firstname="@Model.Name"</a>
Run Code Online (Sandbox Code Playgroud)

并在动作方法中

public IActionResult Edit(string id, string firstname)
{
   // id and firstname are assigned correct values
   // but  RouteData.Values only has three entries which are: controller, action and id, where is firstname?
}
Run Code Online (Sandbox Code Playgroud)

但是我不能通过访问访问firstname值,RouteData.Values["firstname"];而可以通过访问id值RouteData.Values["id"];,为什么它对id有效但对其他自定义属性无效?

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

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