MVC4 路由参数失败,但查询字符串有效



Route Config:

RouteTable.Routes.MapRoute(
                name: "",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Account", action = "PasswordReset" }
            );

页面控制器:

    [AllowAnonymous]
    [ActionName("PasswordReset")]
    public ActionResult PasswordReset(String id)
    {
        RequestPasswordResetModel model = new RequestPasswordResetModel();
        model.Email = id;
        return View(model);
    }

查看错误位置

@inherits Umbraco.Web.Mvc.UmbracoViewPage<object>
@{
     Layout = null;
}

这就是问题所在。

当我去:

/

帐户/密码重置/电子邮件%40电子邮件.com

我在Layout = null时收到错误Object Reference not set to an instance

当我去:

/

帐户/密码重置?id=电子邮件%40电子邮件.com

一切正常。

在这一点上,我完全困惑了。有什么想法吗?

堆栈跟踪:

   at Umbraco.Web.Mvc.UmbracoViewPage`1.WriteLiteral(Object value)
   at ASP._Page_Views_BidNowLayout_cshtml.Execute() in c:Userswes.mitchellSourceReposrams-2.0RAMS-2.0Presentation.BidNowViewsBidNowLayout.cshtml:line 3
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.WebPages.WebPageBase.<>c__DisplayClass7.<RenderPageCore>b__6(TextWriter writer)
   at System.Web.WebPages.HelperResult.WriteTo(TextWriter writer)
   at System.Web.WebPages.WebPageBase.Write(HelperResult result)
   at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body)
   at System.Web.WebPages.WebPageBase.PopContext()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
   at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
   at Umbraco.Core.Profiling.ProfilingView.Render(ViewContext viewContext, TextWriter writer)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)

我想电子邮件编码不正确。尝试使用简单的字符串来执行此操作,当它起作用时,您可以使用另一个标识符。在这种情况下是使用 GUID 的最佳解决方案,因为电子邮件不能由匿名用户透露。

最新更新