在VS 2017中,我创建了一个新的ASP.NET核心Web应用程序.在向导的第二页上,我选择了Web应用程序,对于身份验证,我选择了"个人用户帐户".
现在,我正在尝试找到与/ Account/Register和/ Account/Login相关联的页面.
_Layout.cshtml引入_LoginPartial.cshtml,就像在经典MVC中一样:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a asp-page="/Index">Home</a></li>
<li><a asp-page="/About">About</a></li>
<li><a asp-page="/Contact">Contact</a></li>
</ul>
<partial name="_LoginPartial" />
</div>
Run Code Online (Sandbox Code Playgroud)
如果用户未登录,则_LoginPartial包含<a>指向登录和注册页面的标记:
<ul class="nav navbar-nav navbar-right">
<li><a asp-area="Identity" asp-page="/Account/Register">Register</a></li>
<li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这一切似乎都有道理.但我希望Areas文件夹结构包含Register和Login文件夹.它不是.我发现的唯一的东西是_ViewStart.cshtml
我知道脚手架代码有效,当我运行项目时,Register链接指向"/ Identity/Account/Register",Login链接指向"/ Identity/Account/Login".点击注册链接可以获得一个注册页面,其中包含"创建新帐户"文本.
但我无法在项目的任何地方找到"创建新帐户"文本.
有人能告诉我我错过了什么吗?
学习新事物需要投入时间,空间和精力.我目前正在学习Asp.Net Core MVC 2.0.此ASP.NET核心教程概述指出:
Razor Pages是使用ASP.NET Core 2.0创建Web UI的推荐方法.
这个信息使我无法决定是否必须停止学习Asp.net Core MVC并开始学习Asp.net Core Razor Pages.
欢迎任何指示.
asp.net asp.net-core-mvc asp.net-core razor-pages asp.net-core-mvc-2.0
当我从2.0升级到.NET Core 2.1后尝试将我的应用程序发布到Web服务器时,我收到此消息:"此版本的Microsoft.AspNetCore.All仅与netcoreapp2.1目标框架兼容.请定位netcoreapp2. 1或选择与netcoreapp2.0兼容的Microsoft.AspNetCore.All版本."
它在我的开发机器上运行良好.
这是我的项目文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RunPostBuildEvent>Always</RunPostBuildEvent>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Cors" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
我已经看过了,但似乎没有问题.我还尝试了CodeGeneration.Tools的预发布2.1版本,但我无法安装它.
编辑:我在服务器上安装了dotnet 2.1.
这是我在服务器上看到的内容:
D:\>dotnet --info
Host (useful for support):
Version: 2.1.0
Commit: caa7b7e2ba
.NET Core SDKs installed:
No SDKs were found.
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.0 [C:\Program Files (x86)\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.0.5 [C:\Program …Run Code Online (Sandbox Code Playgroud) 在SO上有一个问题为什么Razor Pages是在Asp.net Core 2.0中创建Web UI的推荐方法?史蒂夫史密斯从少量文件的角度解释了使用Razor Pages而不是完整MVC的好处.
我一直在使用Razor Pages,并注意到尽管Razor Page简洁的优点,但在自定义路由,结构化文件夹和复杂视图模型(页面模型似乎混乱)方面有点复杂.
所以,问题是:
如果一些有经验的人分享了关于使用Razor Pages更好地理解这个框架的想法(优点和缺点),我也将不胜感激.
我正在准备从ASP.NET Core 2.2迁移到3.0。
As I don't use any more advanced JSON features (but maybe one as described below), and 3.0 now comes with a built-in namespace/classes for JSON, System.Text.Json, I decided to see if I could drop the previous default Newtonsoft.Json. Do note, I'm aware that System.Text.Json will not completely replace Newtonsoft.Json.
I managed to do that everywhere, e.g.
var obj = JsonSerializer.Parse<T>(jsonstring);
var jsonstring = JsonSerializer.ToString(obj);
Run Code Online (Sandbox Code Playgroud)
but in one place, where I populate an existing object. …
c# asp.net-core razor-pages asp.net-core-3.0 system.text.json
根据https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.0,默认情况下,剃刀视图应在asp.net core 3.0的本地环境更改时重新编译。
但是,我的项目不在本地执行。如果更改视图并在本地调试时刷新,则更改不会反映出来。我必须停止解决方案,重新运行,然后查看更改。
我在Visual Studio 2019上的默认ASP.NET Core Web应用程序模板上使用asp.net core 3.0.0预览版2使用剃刀页面执行此操作。我是否需要更改设置以启用此功能?
更新于2019年11月进行3.0版全面发布: 这个问题仍然有很多观点。引用了一些答案来补充
services.AddControllersWithViews().AddRazorRuntimeCompilation();
Run Code Online (Sandbox Code Playgroud)
添加Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet包后,将其添加到Startup.cs中的ConfigureServices()函数。就我而言,我仅使用Razor Pages,因此不调用AddControllersWithViews,因此这对我有用:
services.AddRazorPages().AddRazorRuntimeCompilation();
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 .NET Core 3.1 项目转换为 .NET 7。
当我在课堂上使用它时Program.cs:
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
它给了我这样的信息:
建议使用顶级路由注册 UseEndpoints
Show potential fixes然后,我在 Visual Studio 中单击,它显示以下提示:
app.UseEndpoints(endpoints =>
{
_ = endpoints.MapRazorPages();
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
这对我来说看起来是一样的。
在.NET 7中,如果我需要使用RazorPages()该怎么办?
谢谢!
扩展此问题的答案: 在ASP.NET Core Identity UI中更改路由?
当想要自定义URL时,Javier建议使用以下选项之一:
- 使用默认UI的scaffolding元素并自行进行所有必要的自定义.
- 使用重定向规则将旧路由指向新路由.
- 根本不要使用默认UI.
从新的ASP.NET Core 2.1 MVC项目,使用身份验证:个人用户帐户设置,您如何不使用默认UI?它似乎默认安装在Identity Core上.
创建项目后,删除默认UI剃刀页面的方法是什么,仍然使用Identity Core?
我可以删除该/Identity/区域,然后创建我自己的区域AccountController吗?
我的 Blazor 应用程序中的启动页面是 Index.cshtml。我想将启动页面更改为主页,即我的 Home.cshtml。
我正在使用 vs2019,ASPNET CORE Blazor (0.9.0-preview3-19154-020)。
Blazor Serverside 在 Startup.cs 中有路由,我认为它是针对服务的,而不是针对页面的……并且保留为通过创建新的 Blazor 项目生成的。
app.UseMvc(routes =>
{
routes.MapRoute(name: "default", template: "{controller}/{action}/{id?}");
});
Run Code Online (Sandbox Code Playgroud)
客户的启动具有(由新的 Blazor 项目生成):
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IComponentsApplicationBuilder app)
{
app.AddComponent<App>("app");
}
Run Code Online (Sandbox Code Playgroud)
我是否需要以某种方式在客户端 startup.cs 中注册路由?
index.cshtml 只有一行代码:
@page "/"
Run Code Online (Sandbox Code Playgroud)
如何将我的“启动”页面从 Index.cshtml 更改为 Home.cshtml?
我看过很多地方,都知道 Blazor 是“实验性的”。感觉就像我正在努力改变这么简单的东西。
razor-pages ×10
asp.net-core ×6
c# ×5
asp.net ×2
.net-7.0 ×1
asp.net-mvc ×1
blazor ×1
reusability ×1
routing ×1