从视图路由到 Razor 页面操作 Asp.Net 核心 3
Routing from View to a Razor Page action Asp.Net Core 3
我有一个由 MVC 处理的 UnderConstruction 页面。该视图具有以下代码来路由用户,在将他们的电子邮件地址输入到注册页面后,该页面是身份脚手架剃须刀区域的一部分。目的是调出注册页面,其电子邮件已填充到电子邮件输入中。
<!-- route to Register Form -->
<form class="form-inline push-10" method="get">
<div class="form-group">
<label class="sr-only text-white" asp-for="Email">Email Address</label>
<input class="form-control" type="email" asp-for="Email" placeholder="Your Email..">
</div>
<div class="form-group">
<button class="btn btn-default" type="submit" asp-area="Identity" asp-page="/Account/Register" asp-page-handler="WithEmail">
<i class="fa fa-plus"></i> Register
</button>
</div>
<div class="form-group">
<a class="btn btn-default" asp-controller="Home" asp-action="Index">
<i class="fa fa-home"></i> Home
</a>
</div>
和页面视图模型
public class UnderConstructionViewModel
{
public string Email { get; set; }
}
输入电子邮件地址后单击“注册”按钮会生成此 url
https://localhost:44367/Identity/Account/Register?Email=testemail@mydomain.com
这会将您带到注册页面,电子邮件地址未填写在电子邮件输入中。
这里是register.cshtml.cs中的方法(脚手架剃须刀区标识)
public IActionResult OnGetWithEmail(string email)
{
return RedirectToPage("Register", new InputModel{ Email = email });
}
问题是,该方法永远不会被命中。处理程序遵循约定,模型遵循约定,所以我不确定为什么该方法没有被命中。
我还在表单调用中尝试了 asp- 标签助手,但结果相同。
如能帮助解决此问题,我们将不胜感激。
任何附加到表单 action
属性的查询字符串值,或者在本例中的 formaction
属性,在提交表单时被路由系统清除。这似乎是设计使然:https://github.com/aspnet/Mvc/issues/8621
您可以通过将 "{handler?}"
添加到“注册”页面中的 @page
指令来解决此问题。然后处理程序名称作为段而不是查询字符串值附加到 URL。
我有一个由 MVC 处理的 UnderConstruction 页面。该视图具有以下代码来路由用户,在将他们的电子邮件地址输入到注册页面后,该页面是身份脚手架剃须刀区域的一部分。目的是调出注册页面,其电子邮件已填充到电子邮件输入中。
<!-- route to Register Form -->
<form class="form-inline push-10" method="get">
<div class="form-group">
<label class="sr-only text-white" asp-for="Email">Email Address</label>
<input class="form-control" type="email" asp-for="Email" placeholder="Your Email..">
</div>
<div class="form-group">
<button class="btn btn-default" type="submit" asp-area="Identity" asp-page="/Account/Register" asp-page-handler="WithEmail">
<i class="fa fa-plus"></i> Register
</button>
</div>
<div class="form-group">
<a class="btn btn-default" asp-controller="Home" asp-action="Index">
<i class="fa fa-home"></i> Home
</a>
</div>
和页面视图模型
public class UnderConstructionViewModel
{
public string Email { get; set; }
}
输入电子邮件地址后单击“注册”按钮会生成此 url
https://localhost:44367/Identity/Account/Register?Email=testemail@mydomain.com
这会将您带到注册页面,电子邮件地址未填写在电子邮件输入中。
这里是register.cshtml.cs中的方法(脚手架剃须刀区标识)
public IActionResult OnGetWithEmail(string email)
{
return RedirectToPage("Register", new InputModel{ Email = email });
}
问题是,该方法永远不会被命中。处理程序遵循约定,模型遵循约定,所以我不确定为什么该方法没有被命中。
我还在表单调用中尝试了 asp- 标签助手,但结果相同。
如能帮助解决此问题,我们将不胜感激。
任何附加到表单 action
属性的查询字符串值,或者在本例中的 formaction
属性,在提交表单时被路由系统清除。这似乎是设计使然:https://github.com/aspnet/Mvc/issues/8621
您可以通过将 "{handler?}"
添加到“注册”页面中的 @page
指令来解决此问题。然后处理程序名称作为段而不是查询字符串值附加到 URL。