首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从视图路由到Razor页面操作Asp.Net核心3

从视图路由到Razor页面操作Asp.Net核心3
EN

Stack Overflow用户
提问于 2019-10-30 11:55:54
回答 1查看 617关注 0票数 1

我有一个由MVC处理的UnderConstruction页面。视图有以下代码来路由用户,输入他们的电子邮件地址到注册页面,注册页面是身份脚手架剃须刀区域的一部分。其目的是在电子邮件输入中使用他们已经填充的电子邮件打开注册页面。

代码语言:javascript
复制
<!-- 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>

和页面查看模型

代码语言:javascript
复制
 public class UnderConstructionViewModel
{
    public string Email { get; set; }
}

输入电子邮件地址后单击“注册”按钮将生成此url

https://localhost:44367/Identity/Account/Register?Email=testemail@mydomain.com

这将带您使用电子邮件输入中未填充的电子邮件地址到注册页。

以下是register.cshtml.cs (脚手架剃须刀识别区)中的方法

代码语言:javascript
复制
public IActionResult OnGetWithEmail(string email)
{
   return RedirectToPage("Register", new InputModel{ Email = email });
}

问题是,这种方法永远不会被击中。处理程序遵循约定,模型遵循约定,所以我不确定为什么方法没有被击中。

我还在表单调用中尝试了asp- tag帮助程序,但这会产生相同的结果。

如果你能帮忙解决这个问题,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-30 13:40:31

任何附加到表单的action属性的查询字符串值,或者在这种情况下,formaction属性在表单提交时被路由系统删除。这似乎是设计出来的:https://github.com/aspnet/Mvc/issues/8621

您可以通过将"{handler?}"添加到“寄存器”页面中的@page指令来解决此问题。然后将处理程序名作为段而不是查询字符串值附加到URL中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58624837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档