Поскольку директива @helper
больше не поддерживается в ASP. NET Core Razor Pages, вместо этого я использовал директиву @functions
.
@functions
{
void RenderTask(Models.Task task)
{
<tr>
<td class="@Model.CssClass">
<p class="compact">
<span class="font-weight-bold">@task.Title</span>
@if (!string.IsNullOrWhiteSpace(task.Description))
{
<br />@task.Description
}
</p>
</td>
<td class="@Model.CssClass">
<img src="~/images/Edit.png" class="edit-area button-img" data-id="@task.Id" title="Edit" />
<img src="~/images/Delete.png" class="delete-area button-img" data-id="@task.Id" title="Delete" />
</td>
</tr>
}
}
Это похоже на работу но я получаю ошибку:
Ошибка MVC1006: метод содержит TagHelper и, следовательно, должен быть асин c и возвращать задачу. Например, использование ~ / обычно приводит к TagHelper и требует asyn c Task, возвращающего родительский метод.
Поэтому я изменил эту функцию на async
, и я использовал await
ключевое слово в любом месте, где оно называется.
@functions
{
async System.Threading.Tasks.Task RenderTask(Models.Task task)
{
<tr>
<td class="@Model.CssClass">
<p class="compact">
<span class="font-weight-bold">@task.Title</span>
@if (!string.IsNullOrWhiteSpace(task.Description))
{
<br />@task.Description
}
</p>
</td>
<td class="@Model.CssClass">
<img src="~/images/Edit.png" class="edit-area button-img" data-id="@task.Id" title="Edit" />
<img src="~/images/Delete.png" class="delete-area button-img" data-id="@task.Id" title="Delete" />
</td>
</tr>
}
}
Это на самом деле работает, но я получаю предупреждения:
... \ Razor \ Pages \ Tasks \ Index.cs html .g.cs (286,200,286,202): предупреждение CS1998: в этом методе asyn c отсутствуют операторы 'await' и он будет работать синхронно. Попробуйте использовать оператор 'await' для ожидания неблокирующих вызовов API или 'await Task.Run (...)' для выполнения работы с процессором в фоновом потоке.
... \ Razor \ Pages \ Tasks \ Index.cs html .g.cs (312,200,312,202): предупреждение CS1998: в этом асинхронном c методе отсутствуют операторы «ожидания» и он будет работать синхронно. Подумайте об использовании оператора «await» для ожидания неблокирующих вызовов API или «await Task.Run (...)» для выполнения работы с привязкой к ЦП в фоновом потоке.
Index.cs html .g.cs является своего рода промежуточным файлом. Но я не знаю, какие цифры следуют за ним, и двойной щелчок по этим предупреждениям не выводит меня на оскорбительную строку.
На данный момент, я не уверен, в чем проблема. Я много гуглил, но не нашел хорошего примера того, что я должен делать. Любые предложения приветствуются.
Обновление:
Вот раздел Index.cs html .g.cs :
#nullable restore
#line 86 "D:\Users\Jonathan\source\repos\Bamtok\Bamtok\Pages\Tasks\Index.cshtml"
Write(task.Id);
#line default
#line hidden
#nullable disable
__tagHelperStringValueBuffer = EndWriteTagHelperAttribute();
__tagHelperExecutionContext.AddHtmlAttribute("data-id", Html.Raw(__tagHelperStringValueBuffer), global::Microsoft.AspNetCore.Razor.TagHelpers.HtmlAttributeValueStyle.DoubleQuotes);
__tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_3);
await __tagHelperRunner.RunAsync(__tagHelperExecutionContext); // *** ERROR HERE! ***
if (!__tagHelperExecutionContext.Output.IsContentModified)
{
await __tagHelperExecutionContext.SetOutputContentAsync();
}
Write(__tagHelperExecutionContext.Output);
__tagHelperExecutionContext = __tagHelperScopeManager.End();
WriteLiteral("\r\n ");
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("img", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.SelfClosing, "5fc6845fce9caf31066e5edd3fc6a51f323364e715810", async() => {
}
);