【问题标题】:MVC4 Route Parameter Fails, but Query String worksMVC4 路由参数失败,但查询字符串有效
【发布时间】:2015-05-01 01:21:55
【问题描述】:

路线配置:

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;
}

这就是问题所在。

当我去:

/Account/PasswordReset/email%40email.com

Layout = nullObject Reference not set to an instance 出现错误

当我去:

/Account/PasswordReset?id=email%40email.com

一切正常。

此时我完全糊涂了。有什么想法吗?

堆栈跟踪:

   at Umbraco.Web.Mvc.UmbracoViewPage`1.WriteLiteral(Object value)
   at ASP._Page_Views_BidNowLayout_cshtml.Execute() in c:\Users\wes.mitchell\Source\Repos\rams-2.0\RAMS-2.0\Presentation.BidNow\Views\BidNowLayout.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)

【问题讨论】:

    标签: c# asp.net-mvc-4 routes umbraco


    【解决方案1】:

    我认为电子邮件编码不正确。尝试用简单的字符串来做,当它起作用时,你可以使用另一个标识符。在这种情况下,使用 GUID 是最好的解决方案,因为匿名用户无法透露电子邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多