问题标签 [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.
asp.net - 如何从一个页面处理程序发布到另一个页面处理程序?
我正在使用 Razor Pages(不是 MVC)开发 ASP.NET Core 2.0 项目。
我有以下流程:
- 用户填写表格和帖子
- 此页面的 POST 处理程序验证信息并在有问题时返回 Page()。如果没有,处理程序将数据保存到数据库。
- 从这里开始,我希望处理程序使用步骤 2 中经过验证和保存的数据 POST 到不同页面的 POST 处理程序。
如何从页面处理程序中 POST 到另一个页面?这是做这种事情的合适方法吗?我不想 RedirectToPage() 的原因是我不希望序列中的最后一页可以通过 GET 导航。最后一页不应通过直接链接访问,而应仅在 POST 上返回。
我考虑过验证/保存数据并设置一个布尔值“IsValid”并返回页面,检查该 IsValid,并立即通过 JS 发布到最终页面。然而,这感觉很脏。
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 的值?
c# - 从 SQL 查询中添加额外列时出现类绑定错误
我正在使用实体框架从 SQL 中检索数据。
我有两个 razorpages 使用相同的类进行绑定
- Razorpage 1. 使用从表中返回所有可用列的查询
- Razorpage 2. 使用向不在表中的结果添加新列的查询
看起来像这样
因此,在 2:nd 中,查询正在将一列添加到不在表中的结果中。
如果我将该列作为属性添加到我的类中,我会收到错误消息:我的第一个剃须刀页面的“FromSql”操作结果中不存在所需的列“Rsp”,但来自第 2:nd 剃须刀页面的操作结果中不存在所需的列“Rsp”。
因此,第一个 razorpage 生成错误,因为“Rsp”列在类中,但不在表中,也不在结果集中
我还注意到我需要在类中将 Rsp 声明为虚拟才能获得正确的值
我怎样才能使这对我的两个剃须刀页面都有效?
使用 Visuas Studio 2017、v15.5.2 和 Asp.NET Core v2
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 具有简单性的优点,但在自定义路由、结构化文件夹和复杂的视图模型(页面模型似乎杂乱无章)方面有点复杂。
所以,问题是:
- 如果除了页面的简单性之外还有什么比控制器/视图更喜欢 Razor 页面 - 特别是我对这两个框架的性能感兴趣?
- 是否可以同时组合 Razor 页面和控制器/视图?
如果一些有经验的人分享你关于使用 Razor Pages 更好地理解这个框架的想法(优点和缺点),我也将不胜感激。
asp.net-core - ASP.Net Core Razor 页面中的引导多选单击时不显示下拉菜单
我无法让引导多选下拉菜单在我的视图中工作。我只是得到了这里的按钮
。
但是,单击它不会触发下拉菜单出现。
下面是我的代码片段和我包含的 css/js 文件。我没有在浏览器开发工具中发现任何错误。我错过了什么吗?
asp.net - Asp.Net Core 2 中是否有等效于 Response.Redirect("~/Controller/") 的方法?
是否有等价于Response.Redirect("~/Controller/")
in Asp.Net Core 2
?
我不想使用ViewComponent
. 而不是,我想从视图中调用控制器和操作方法。
c# - 循环遍历编号属性以在 Razor 页面中生成输入
我有一个模型,其中包含 34 个编号属性,如下所示
我不想为 Razor Pages 中的每个类别编写输入,而是想使用循环遍历所有类别并生成适当的控制组。我试过下面的代码:
当我构建项目并导航到该页面时,我收到此错误:
InvalidOperationException:模板只能用于字段访问、属性访问、单维数组索引或单参数自定义索引器表达式。
我不确定我是否在正确的轨道上。我真的很想创建一个循环来生成这些输入,以便将来的维护和更改更容易。从我的代码/问题中可能很明显,我对此很陌生,因此感谢您的帮助。
编辑添加解决方案:
我使用了 Ed Plunkett 提供的解决方案,我在下面进行了检查。我对其进行了一些修改,最终创建了一个名为“Rating”的新类,因为我发现在实践中我需要一个更复杂的对象。我现在的看法是
在控制器中,我使用一个循环根据我需要的数量在列表中添加任意数量的空评级。
尽管随着应用程序的发展,这可能会更新为使用硬编码数字以外的东西。
最后,我在视图中使用了一个循环来为列表中的每个评级创建一组控件。在这种情况下,它是一个 TableRow,在不同的列中包含不同的控件:
我发现这组输入中的数据可以通过简单地包含
在提交表单时运行的任何方法的参数中。
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 号)?有没有人有任何类似嵌套结构的例子(我很难找到例子)?
javascript - 从文本框 onblur 更改为 onKeyDown 事件
我的部分视图中有以下代码:
在 lineItemQuantity 文本输入中,我想将其从 onblur 更改为 onKeyDown 事件,以捕获按下的“Enter”键以使用相同的参数调用 changeCartQty 函数。这是被调用的函数:
};
这工作正常并且金额更新,我只需将其更改为 onChange,我不确定如何完成。
谢谢。
asp.net-core - Razor 页面的基于角色的授权
在 asp.net core 中很容易定义页面和文件夹的剃须刀页面授权,如下所示:
我的问题是我想在我的项目中使用角色,但我找不到定义允许哪些角色查看页面内容的方法。
我尝试使用 Authorize 属性,但它不适用于 Razor Pages。
AuthorizePage 可以采用第二个参数,该参数可用于定义将使用的策略,以确定当前用户是否可以看到指定的页面。我使用它如下:
问题是它仍然不起作用。就像我没有定义策略一样。当我登录时,我可以看到该页面,当我没有登录时,它会将我重定向到登录表单。
为了让它工作,我还需要做些什么吗?