ASP.NET Core 3.1 中的可重用 HTML 位在编辑器中标记为红色
Reusable HTML bits in ASP.NET Core 3.1 marked red in editor
编辑 Razor 视图时 Visual Studio 中的编辑器出现问题。
我正在使用 ASP.NET 核心版本 3.1。
我有相同的 HTML 重复了几个地方,所以我想创建一个函数来完成它。
本文介绍了应该如何完成:https://www.mikesdotnetting.com/article/344/what-happened-to-helpers-in-asp-net-core
所以我的 .cshtml 文件中有以下代码:
@model WebApplication2.Models.RapportData
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AuthoringTagHelpers
<h1>Report for @Model.PersonID</h1>
<table width="100%">
<tr>
<td>
<h2>Section 1</h2>
@{ MakeDiv(
"Some div",
new[]
{
"QID1",
"QID2",
"QID3"
}, "float:left"); }
</td>
</tr>
</table>
@{
void MakeDiv(string subtitle, string[] props, string style)
{
<div style="@style">
<h3>@subtitle</h3>
<table>
@foreach (var e in Model.Egenskaper
.Where(e => props.Contains(e.QId)))
{
<tr>
<td>
<a href="http://#@e.QId">@e.Name</a>
</td>
<td>
@e.Value
</td>
</tr>
}
</table>
</div>;
}
}
所以问题是在Visual Studio2019,版本16.7.6中,@{...}函数里面的HTML-tags被标记为错误,但是当运行 它应该正常工作的代码。如果我在第一个 DIV-tag 前面放一个 @,编辑器似乎很高兴,但它不会编译。
那我做错了什么?我怎样才能让 Visual Studio 不明白在函数中使用 HTML 标签不是错误?
这是它的样子:
好的,所以我找到了修复方法。就是在函数的最前面放一个以分号结束的语句:
@{
void MakeDiv(string subtitle, string[] props, string style)
{
var a = 1; //this would fix it
<div style="@style">
<h3>@subtitle</h3>
<table>
@foreach (var e in Model.Egenskaper
.Where(e => props.Contains(e.QId)))
{
<tr>
<td>
<a href="http://#@e.QId">@e.Name</a>
</td>
<td>
@e.Value
</td>
</tr>
}
</table>
</div>};
}
}
但我想检查是否有任何道具可以展示会更有意义。只要函数中的第一条语句不是HTML,而是以分号结束的代码。
我仍然不确定为什么会这样。可能是因为某些插件(例如我正在使用 Resharper)。
编辑 Razor 视图时 Visual Studio 中的编辑器出现问题。 我正在使用 ASP.NET 核心版本 3.1。 我有相同的 HTML 重复了几个地方,所以我想创建一个函数来完成它。 本文介绍了应该如何完成:https://www.mikesdotnetting.com/article/344/what-happened-to-helpers-in-asp-net-core
所以我的 .cshtml 文件中有以下代码:
@model WebApplication2.Models.RapportData
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AuthoringTagHelpers
<h1>Report for @Model.PersonID</h1>
<table width="100%">
<tr>
<td>
<h2>Section 1</h2>
@{ MakeDiv(
"Some div",
new[]
{
"QID1",
"QID2",
"QID3"
}, "float:left"); }
</td>
</tr>
</table>
@{
void MakeDiv(string subtitle, string[] props, string style)
{
<div style="@style">
<h3>@subtitle</h3>
<table>
@foreach (var e in Model.Egenskaper
.Where(e => props.Contains(e.QId)))
{
<tr>
<td>
<a href="http://#@e.QId">@e.Name</a>
</td>
<td>
@e.Value
</td>
</tr>
}
</table>
</div>;
}
}
所以问题是在Visual Studio2019,版本16.7.6中,@{...}函数里面的HTML-tags被标记为错误,但是当运行 它应该正常工作的代码。如果我在第一个 DIV-tag 前面放一个 @,编辑器似乎很高兴,但它不会编译。
那我做错了什么?我怎样才能让 Visual Studio 不明白在函数中使用 HTML 标签不是错误?
这是它的样子:
好的,所以我找到了修复方法。就是在函数的最前面放一个以分号结束的语句:
@{
void MakeDiv(string subtitle, string[] props, string style)
{
var a = 1; //this would fix it
<div style="@style">
<h3>@subtitle</h3>
<table>
@foreach (var e in Model.Egenskaper
.Where(e => props.Contains(e.QId)))
{
<tr>
<td>
<a href="http://#@e.QId">@e.Name</a>
</td>
<td>
@e.Value
</td>
</tr>
}
</table>
</div>};
}
}
但我想检查是否有任何道具可以展示会更有意义。只要函数中的第一条语句不是HTML,而是以分号结束的代码。
我仍然不确定为什么会这样。可能是因为某些插件(例如我正在使用 Resharper)。