问题标签 [razor-pages]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6745 浏览

asp.net - 如何从一个页面处理程序发布到另一个页面处理程序?

我正在使用 Razor Pages(不是 MVC)开发 ASP.NET Core 2.0 项目。

我有以下流程:

  1. 用户填写表格和帖子
  2. 此页面的 POST 处理程序验证信息并在有问题时返回 Page()。如果没有,处理程序将数据保存到数据库。
  3. 从这里开始,我希望处理程序使用步骤 2 中经过验证和保存的数据 POST 到不同页面的 POST 处理程序。

如何从页面处理程序中 POST 到另一个页面?这是做这种事情的合适方法吗?我不想 RedirectToPage() 的原因是我不希望序列中的最后一页可以通过 GET 导航。最后一页不应通过直接链接访问,而应仅在 POST 上返回。

我考虑过验证/保存数据并设置一个布尔值“IsValid”并返回页面,检查该 IsValid,并立即通过 JS 发布到最终页面。然而,这感觉很脏。

0 投票
1 回答
45 浏览

c# - 传入请求以 404 结尾时如何知道 id 的值?

为了便于说明,我举一个简单的例子如下。

审查.cshtml.cs:

审查.cshtml:

当我导航到

  • localhost/Review/1--------------- 404。
  • localhost/Review/xyz--------------- 404。
  • localhost/Review/--------------- X=null

  • localhost/Review?id=1--------------- X=1

  • localhost/Review?id=--------------- X=null
  • localhost/Review?id=xyz--------------- X=null

我试图使用 Visual Studio Debugger 来计算id抛出 404 页面的值,但我无法进入。

传入请求以 404 结尾时如何知道 id 的值?

0 投票
1 回答
568 浏览

c# - 从 SQL 查询中添加额外列时出现类绑定错误

我正在使用实体框架从 SQL 中检索数据。

我有两个 razorpages 使用相同的类进行绑定

  1. Razorpage 1. 使用从表中返回所有可用列的查询
  2. Razorpage 2. 使用向不在表中的结果添加新列的查询

看起来像这样

因此,在 2:nd 中,查询正在将一列添加到不在表中的结果中。

如果我将该列作为属性添加到我的类中,我会收到错误消息:我的第一个剃须刀页面的“FromSql”操作结果中不存在所需的列“Rsp”,但来自第 2:nd 剃须刀页面的操作结果中不存在所需的列“Rsp”。

因此,第一个 razorpage 生成错误,因为“Rsp”列在类中,但不在表中,也不在结果集中

我还注意到我需要在类中将 Rsp 声明为虚拟才能获得正确的值

我怎样才能使这对我的两个剃须刀页面都有效?

使用 Visuas Studio 2017、v15.5.2 和 Asp.NET Core v2

0 投票
4 回答
43537 浏览

asp.net-core-mvc - ASP.NET Core Razor 页面与完整 MVC 核心

SO为什么推荐使用 Razor Pages 在 Asp.net Core 2.0 中创建 Web UI 的方法有一个问题?史蒂夫史密斯从文件更少的角度友好地解释了使用 Razor Pages 而不是完整 MVC 的好处。

我使用 Razor Pages 已经有一段时间了,注意到尽管 Razor Pages 具有简单性的优点,但在自定义路由、结构化文件夹和复杂的视图模型(页面模型似乎杂乱无章)方面有点复杂。

所以,问题是:

  1. 如果除了页面的简单性之外还有什么比控制器/视图更喜欢 Razor 页面 - 特别是我对这两个框架的性能感兴趣?
  2. 是否可以同时组合 Razor 页面和控制器/视图?

如果一些有经验的人分享你关于使用 Razor Pages 更好地理解这个框架的想法(优点和缺点),我也将不胜感激。

0 投票
1 回答
3344 浏览

asp.net-core - ASP.Net Core Razor 页面中的引导多选单击时不显示下拉菜单

我无法让引导多选下拉菜单在我的视图中工作。我只是得到了这里的按钮
图片

但是,单击它不会触发下拉菜单出现。

下面是我的代码片段和我包含的 css/js 文件。我没有在浏览器开发工具中发现任何错误。我错过了什么吗?

0 投票
3 回答
8508 浏览

asp.net - Asp.Net Core 2 中是否有等效于 Response.Redirect("~/Controller/") 的方法?

是否有等价于Response.Redirect("~/Controller/")in Asp.Net Core 2

我不想使用ViewComponent. 而不是,我想从视图中调用控制器和操作方法。

0 投票
2 回答
897 浏览

c# - 循环遍历编号属性以在 Razor 页面中生成输入

我有一个模型,其中包含 34 个编号属性,如下所示

我不想为 Razor Pages 中的每个类别编写输入,而是想使用循环遍历所有类别并生成适当的控制组。我试过下面的代码:

当我构建项目并导航到该页面时,我收到此错误:

InvalidOperationException:模板只能用于字段访问、属性访问、单维数组索引或单参数自定义索引器表达式。

我不确定我是否在正确的轨道上。我真的很想创建一个循环来生成这些输入,以便将来的维护和更改更容易。从我的代码/问题中可能很明显,我对此很陌生,因此感谢您的帮助。

编辑添加解决方案:

我使用了 Ed Plunkett 提供的解决方案,我在下面进行了检查。我对其进行了一些修改,最终创建了一个名为“Rating”的新类,因为我发现在实践中我需要一个更复杂的对象。我现在的看法是

在控制器中,我使用一个循环根据我需要的数量在列表中添加任意数量的空评级。

尽管随着应用程序的发展,这可能会更新为使用硬编码数字以外的东西。

最后,我在视图中使用了一个循环来为列表中的每个评级创建一组控件。在这种情况下,它是一个 TableRow,在不同的列中包含不同的控件:

我发现这组输入中的数据可以通过简单地包含

在提交表单时运行的任何方法的参数中。

0 投票
0 回答
698 浏览

url-rewriting - 使用在路径中涉及多个变量的复杂路由 Razor Page 路由约定

背景

.NetCore 2 Web 应用程序以完整的 .Net 框架为目标。我们正在从传统的 MVC 分离控制器/视图结构转变,我们使用 [Route()]/Get() 属性配置路由规则来处理到 Razor 页面的路由。

至今

遵循 MS 文档(https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/razor-pages-convention-features#page-model-action-conventions)我有第一层具有类别 ID 的文件夹被传递到页面;

例如“/category/15032/dashboard/”解析为页面“ pages /category/dashboard”

这按预期工作。但是,当我尝试进一步增加文件夹结构的深度时,问题就出现了。

问题

每个类别都包含一个子类别,然后在其中包含一个项目。例如,我将包含一个深度嵌套的页面。

例如“/category/15032/subcategory/543/item/211/status”应该解析为页面“ pages /category/subcategory/item/status”

希望添加以下约定可以解决此问题;

错误

Microsoft.AspNetCore.Routing.RouteCreationException:属性路由信息出现以下错误:

操作:“页面:/category/subcategory/item/dashboard”错误:路由参数名称“categoryid”在路由模板中出现多次。参数名称:路由模板

在 Microsoft.AspNetCore.Mvc.Internal.AttributeRoute.GetRouteInfos(IReadOnlyList 1 actions) 在 Microsoft.AspNetCore.Mvc.Internal.AttributeRoute.AddEntries(TreeRouteBuilder builder, ActionDescriptorCollection actions) 在 Microsoft.AspNetCore.Mvc.Internal.AttributeRoute.GetTreeRouter()在 Microsoft.AspNetCore.Mvc.Internal.AttributeRoute.RouteAsync(RouteContext context) 在 Microsoft.AspNetCore.Routing.RouteCollection.d__9.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪---在 System. Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft.AspNetCore.Builder.RouterMiddleware.d__4。MoveNext() --- 从先前引发异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft.AspNetCore 的 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() .Diagnostics.DeveloperExceptionPageMiddleware.d__7.MoveNext()

问题

注意:文件夹是这样嵌套的,因为该站点有很多页面,因此保持井井有条非常重要。

我怎样才能避免这个错误?我是否必须更改 URL 结构 - 这已被证明相当易读(通常不使用 ID 号)?有没有人有任何类似嵌套结构的例子(我很难找到例子)?

0 投票
0 回答
19 浏览

javascript - 从文本框 onblur 更改为 onKeyDown 事件

我的部分视图中有以下代码:

在 lineItemQuantity 文本输入中,我想将其从 onblur 更改为 onKeyDown 事件,以捕获按下的“Enter”键以使用相同的参数调用 changeCartQty 函数。这是被调用的函数:

};

这工作正常并且金额更新,我只需将其更改为 onChange,我不确定如何完成。

谢谢。

0 投票
2 回答
6241 浏览

asp.net-core - Razor 页面的基于角色的授权

在 asp.net core 中很容易定义页面和文件夹的剃须刀页面授权,如下所示:

我的问题是我想在我的项目中使用角色,但我找不到定义允许哪些角色查看页面内容的方法。

我尝试使用 Authorize 属性,但它不适用于 Razor Pages。

AuthorizePage 可以采用第二个参数,该参数可用于定义将使用的策略,以确定当前用户是否可以看到指定的页面。我使用它如下:

问题是它仍然不起作用。就像我没有定义策略一样。当我登录时,我可以看到该页面,当我没有登录时,它会将我重定向到登录表单。

为了让它工作,我还需要做些什么吗?