我正在尝试使用剃须刀页面创建一个简单的Web应用程序。 Create
的渲染锚标记未正确生成。
<a href>Create</a>
我的应用程序似乎没有/Facility/Create
作为有效的URL,即使我手动去那里也是如此。我想做些其他事情来使锚标记呈现为
<a href="/Facility/Create">Create</a>
,让应用程序了解/Facility/Create
。
@page
@model IndexModel
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
<h1>Facilities</h1>
<form method="post">
<table class="table">
<thead>
<tr>
<th>Name</th>
</tr>
</thead>
<tbody>
@foreach (var facility in Model.Facilities)
{
<tr>
<td>@facility.Name</td>
<td>
<a asp-page="Edit" asp-route-id="@facility.Id">edit</a>
<button type="submit" asp-page-handler="delete"
asp-route-id="@facility.Id">
delete
</button>
</td>
</tr>
}
</tbody>
</table>
<a asp-page="/Facility/Create">Create</a>
</form>
答案 0 :(得分:1)
存在一个基于所使用的IDE版本的工具问题,可能会损坏 .csproj 文件。
提供的回购示例包含以下 .csproj
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
<ItemGroup>
<Folder Include="Pages\Facility\" />
</ItemGroup>
<ItemGroup>
<Content Update="appsettings.Development.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
在我的研究中,我遇到了以下问题
<Folder Include="..." />
仅代表项目内的一个空文件夹。它在项目文件夹下不包含任何文件。
在创建文件夹时,项目将节点添加到项目文件中,但在添加文件后未将其删除。因此,在编译时未包含该文件夹下添加的剃须刀页面,这在运行时导致了所描述的问题。
建议从 .csproj 中删除该节点,因为默认情况下会包含/嵌入/编译项目文件夹中的所有文件,除非在项目文件中明确选择退出。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
<ItemGroup>
<Content Update="appsettings.Development.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
重新编译项目后,缺少的页面将可用并提供预期的行为。
最后检查以确保将可用的修补程序和更新应用于正在使用的IDE。