我有一个标签助手,沿着以下几行:
[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 Core的剃刀视图上为焦点添加焦点的方法.我知道这可以通过javascript完成,但是还有一个标签吗?在input元素或包含表单元素上.
提前致谢
SørenRokkedal
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标签助手中执行相同操作?
我正在尝试制作一个绑定到当前 ModelState 的自定义 TagHelper,就像
<input asp-for="this_part" />
Run Code Online (Sandbox Code Playgroud)
我想从我的自定义 TagHelper 类中进行一些 ModelState 验证。
尝试搜索Github存储库,但无法查明这一确切行为。有人找到办法做到这一点吗?
谢谢!
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)
但我没有在下拉框中找到列表.
我想将该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)
这是上述代码的输出,其中+已替换为+:
<script integrity="sha384-Li9vy3DqF8tnTXuiaAJuML3ky+er10rcgNR/VqsVpcw+ThHmYcwiB1pbOxEbzJr7"></script>
Run Code Online (Sandbox Code Playgroud)
我怎样才能阻止这种编码的发生?
在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)
我可以<a href='/Area/Controller/action'> </a>
在asp.net vnext中使用,但只是想知道我们是否可以使用标记助手
<a asp-controller="ControllerName" asp-action="ActionName" asp-area="AreaName">来重定向到该区域中的特定文件.
是否有人会指导我如何使用标签助手重定向到区域中的文件.
我需要一个带有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)
但是在结果页面上,此元素为空:
我的代码有什么不正确?
我想阻止<partial>使用 asp.net core 帮助程序的渲染标记。我的代码是:
<pre>
<code class="language-html">
<partial name="~/Breadcrumbs/BreadcrumbTemplate.cshtml" model="breadcrumbs" />
</code>
</pre>
Run Code Online (Sandbox Code Playgroud)
我需要打印完全相同的代码,无需渲染。提前致谢。
在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有效但对其他自定义属性无效?
tag-helpers ×11
asp.net-core ×5
c# ×5
razor ×5
asp.net-mvc ×4
asp.net ×2
forms ×1
html ×1
select ×1