如何解决ASP.NET Core 3.1中的可重用HTML位在编辑器中标记为红色
在编辑Razor视图时,Visual Studio中的编辑器出现问题。 我正在使用ASP.NET Core 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 Studio 2019 16.7.6版中,@ {...}函数内的HTML标记被标记为错误,但是在运行代码时它应能正常工作。如果我在第一个DIV标记前面加上@,则似乎编辑器很满意,但随后将无法编译。
那么我在做什么错了?我该如何使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)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。