适用于与Razor Pages相关的问题,这是从ASP.NET Core 2.0开始的ASP.NET Core的一个功能。
启用自定义pagemodel,可以重定向在自定义pagemodel中?
对于我的布局,我想为Navbar传递一些变量,以及您有什么(例如用户名)。因此,我创建了一个继承PageModel的LayoutModel类。 公共课程...
这是呈现此标记的方式。请注意,添加了带有ID__Invariant的新的隐藏元素。 <div class="col-md-4"> <div class="mb-3"> <label class="control-label" for="OrderSearch_StartDate">Start Date (Order Closed)</label> <div class="input-group"> <button type="button" class="btn btn-outline-primary dropdown-toggle" data-bs-toggle="dropdown" title="Predefined Dates"> <img src="/images/mdi/calendar.svg" /> </button> <ul class="dropdown-menu"> <li><a data-mode="1" href="javascript:void(0)" class="set-dates dropdown-item">Today</a></li> <li><a data-mode="2" href="javascript:void(0)" class="set-dates dropdown-item">Yesterday</a></li> <li><a data-mode="3" href="javascript:void(0)" class="set-dates dropdown-item">This Week</a></li> <li><a data-mode="4" href="javascript:void(0)" class="set-dates dropdown-item">This Month</a></li> <li><a data-mode="5" href="javascript:void(0)" class="set-dates dropdown-item">This Quarter</a></li> <li><a data-mode="6" href="javascript:void(0)" class="set-dates dropdown-item">This Year</a></li> <li><a data-mode="7" href="javascript:void(0)" class="set-dates dropdown-item">Last Week</a></li> <li><a data-mode="8" href="javascript:void(0)" class="set-dates dropdown-item">Last Month</a></li> <li><a data-mode="9" href="javascript:void(0)" class="set-dates dropdown-item">Last Quarter</a></li> <li><a data-mode="10" href="javascript:void(0)" class="set-dates dropdown-item">Last Year</a></li> </ul> <input type="date" class="form-control" id="OrderSearch_StartDate" name="OrderSearch.StartDate" value="" /> <input name="__Invariant" type="hidden" value="OrderSearch.StartDate" /> </div> <span class="text-danger field-validation-valid" data-valmsg-for="OrderSearch.StartDate" data-valmsg-replace="true"></span> </div> </div> 我使用bootstrap 5。由于我的<input>元素不再是<div>元素的最后一个元素,所以我的输入组的bootstrap样式被弄乱了。我不知道这个问题是否与Bootstrap有关。 我谷歌搜索了很多东西,但找不到任何东西。有人以前看过吗? update:这似乎与<input>标签助手有关。如果我将我的StartDate控件的类型明确设置为text或datetime,则不会添加隐藏元素。但是我需要一个约会。 目前,我正在指定这样的属性上的日期: [Display(Name = "Start Date (Order Closed)")] [DataType(DataType.Date)] public DateTime? StartDate { get; set; } 在Githubpost.中讨论了这一问题。 这与.NET 7左右发生的变化有关,该更改导致<input>标记助手添加隐藏的元素以帮助解决潜在的文化问题。 在大多数情况下,不会产生不利影响。但是,在这里,Bootstrap 5输入组仅围绕拐角处,以完成该组中的第一个和最后一个元素。由于标签助手在我的距离之后插入了一个额外的元素,所以我的角落没有变成圆角,这弄乱了格式。 如果您可以在没有此功能的情况下执行此操作,则可以使用以下代码禁用它。 builder.Services.AddRazorPages(options => { // ... }) .AddViewOptions(options => { options.HtmlHelperOptions.FormInputRenderMode = FormInputRenderMode.AlwaysUseCurrentCulture; });
为什么我的ASP.NET剃须刀页面onClick方法不发射? 我在我的index.cshmtl中有这个按钮
我在我的index.cshmtl中有这个按钮 <button value="Search" name="Search" submit="Search" class="searchbutton" onclick="btnSearch_Click">Search</button> 单击时,该按钮将发送帖子。 在我的index.cshtml.cs中,我有这个布尔变量和函数private bool SearchButton; protected void btnSearch_Click(object sender, EventArgs e) { SearchButton = true; } 因此,我的问题是,如果我单击按钮,代码将永远不会输入btnsearch_click函数 您可以在剃须刀页面中使用命名的处理程序方法在Web表单中模拟服务器端事件处理程序。 there是一个内容页面: @page @model RazorPagesDemo.Pages.HandlerDemoModel @{ } <p>@Model.Message</p> <form asp-page-handler="Search" method="post"> <input type="text" asp-for="SearchTerm" /> <button class="btn btn-default">Search</button> </form> 这是PageModel: public class HandlerDemoModel : PageModel { [BindProperty] public string SearchTerm { get; set; } public string Message { get; set; } public void OnPostSearch() { Message = $"You searched for {SearchTerm}"; } } OnPostSearch等同于您的btnSearch_Click方法。您使用asp-page-handler属性将表单连接起来以执行该方法。您可以在此处阅读有关Razor Pages处理程序方法的更多信息:Https://www.learnrazorpages.com/razor-pages/handler-methods
在我的ASP.NET Core 3.1网站上,我正在尝试为不同的支持语言生成替代链接。这些链接存储在资源中。我正在使用istringLocalizer <>作为我
我脚手架的所有剃须刀视图,因为我想编辑它们。 但是,其中一些人的底部有: @section脚本{
我脚手架所有的剃须刀视图,因为我想编辑它们。 其中一些在底部有一个:
需要一些帮助。剃须刀组件的新成分。我有一个主持发票的Razor页面,其款项为付款。我创建了一个用于处理付款和更新财产的剃须刀组件...
新学习剃须刀 app.mapget(“/”,()=> results.redirect(“/index”)); 重定向到页面文件夹中的页面索引。 Web浏览器地址栏似乎具有这样的路由名称: ...
RENAMEASP.NET CORE的抗试验曲奇并保持随机部分
asp.netCore的抗虐待曲奇名称为.aspnetcore.antiforgery.xxx,其中最后一个位是随机的。 饼干可以像这样重命名: Builder.Services.AddantIforgery(x => x.cookie.name =“ ...
如何重定向到ASP.NET Core Razor页面,而无需使用路由
我有一个剃须刀CS页面: public iCultresult onpost(){ 如果(!modelState.isvalid){ 返回页面(); } 返回redirectTopage('pags/index.cshtml'); } 和一个CSHTML页面: @页 @using
i可以使用锚标签助手进入其他剃须刀页面(来自现有剃须刀页面),例如这有效: i可以使用锚标签助手进入其他剃须刀页面(来自现有剃须刀页面),例如这有效: <a asp-page="./EditReport" asp-route-id="@report.IntegrityReportId" class="btn fa fa-edit"></a> 我可以做类似的工作,但是使用按钮可以使用?我尝试了: <button type="button" asp-route-data="@report.IntegrityReportId" asp-route="EditReport">EditReport</button> 但是页面永远不会加载。我还尝试使用具有不同变化的页面处理程序: <input type="button" asp-page-handler="EditReport" asp-route="@report.IntegrityReportId"/> 和关联(在页面.cs文件中): public ActionResult OnEditReport(int id) { return RedirectToPage("./EditReport", id); } 但是这种方法永远不会被调用(我还尝试了命名方法enposteditReport,但同样的问题。 如果有帮助的,我的原始non-.net核心应用程序可以很好地使用: <button type="button" title="Edit report" class="btn btn-datatable fa fa-edit" onclick="location.href = '@Url.Action("EditReport", "Home", new {id = report.IntegrityReportID})'"></button> 我设法通过使用以下锚来获得我需要的效果 - 因此看起来像一个按钮。 <a asp-page="./EditReport" asp-route-id="@report.IntegrityReportId" class="btn btn-default"><i class="fa fa-edit"></i></a> 您不能仅使用一个按钮,该按钮将无需JavaScript重定向到另一个剃须刀页面。您可以在表单标签中使用提交按钮,以重定向到另一个剃须刀页面。以下示例演示了如何重定向将重定向到有关页面的重定向: <form method="get"> <button type="submit" asp-page="./About">Click me to go to the About page</button> </form> 如果您想要发布请求,请使用以下代码: <form method="post"> <button type="submit" asp-page="./About">Click me to go to the About page</button> </form> 在两种情况下,您都可以定义路由值或处理程序以满足要求。 我希望它能有所帮助。 下面的解决方案在我的ASP.NET Core 3.1项目中对我有用: <a class="btn btn-primary btn-sm" asp-page="./Edit" asp-route-id="@item.Id"><i class="fas fa-user"></i> Edit</a> 上面突出显示的代码都在一行上,只是堆栈溢出的方式提出答案。请注意,我选择在按钮中的文本之前显示图标,然后在按钮标签“编辑”之前添加了一个Chazr空间,以便按钮看起来更好。 这在Aspnet Core 3.1中工作。 <form method="get" action="/myRazorPage"> <button type="submit">Join Now</button> </form> 您必须删除type="button",也要尝试从..中删除asp-page="./EditReport"。 使用按钮:<button type="button" class="btn" onclick="window.location.href = '/YourPage'">Button Title</button>