【问题标题】:How to control url in mvc3如何在 mvc3 中控制 url
【发布时间】:2012-09-05 05:25:41
【问题描述】:

我使用 MVC3 的默认登录模型。 LogOn 部分视图在 Layout 视图中。

@Html.Partial( "~/Views/Home/LogOn.cshtml", new MyProject.Models.LogOnModel() ) 

登录后Url为:

http://localhost:20234/?UserName=TestUsername&Password=121212&RememberMe=True

我不想在 URL 中看到密码。 如何从 URL 中删除密码(还有用户名、RememberMe)?

【问题讨论】:

    标签: asp.net-mvc-3 url routing url-routing


    【解决方案1】:

    当您使用 GET 方法将数据传输到服务器时,参数在 url 中可见。在这种情况下,您应该使用 POST 方法。例如:

    <form action="/Account/Logon" method="POST">
        <input type="text" name="Username"/>
        <input type="text" name="Password"/>
        <input type="submit"/>
    </form>
    

    【讨论】:

    • 我在 LogOn 局部视图中写道:@using (Html.BeginForm("LogOn", "Home", FormMethod.Post)) {....}
    • 是的,这将呈现为:
      ...
      现在您应该发布一个表单,就是这样。跨度>
    • 您使用 发帖?您不应该使用 来发布表单。
    • 我用 发帖
    【解决方案2】:

    1)请更改为您的默认路线:

     routes.MapRoute(
                        "DefaultSite",
                        "{controller}/{action}/{id}",
                        new
                            { 
                                controller ="Account",
                                action ="LogOn",
                                id = UrlParameter.Optional
                            }
                        );
    

    2)在主加载文件上加载部分内容:

     @using (Html.BeginForm("LogOn","Account",HttpMethod.Post))
        {
            @Html.AntiForgeryToken() 
            @Html.Partial( "~/Views/Home/LogOn.cshtml", new MyProject.Models.LogOnModel())          
        }
    

    3) 并且帐户控制器添加了您的登录逻辑:

      [HttpPost]
            [ValidateAntiForgeryToken]
            public ActionResult Login(LogOnModel model)
            {
                if (ModelState.IsValid)
                {
                    //TODO:
    
                    return RedirectToAction("index", "home");
                }
    
                // If we got this far, something failed, redisplay form
                ModelState.AddModelError("", @"The user name or password provided is incorrect.");
                return View(model);
            }
    

    【讨论】:

    • LogOn 是我的应用程序中的部分视图,位于主视图中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多