如何在mvc3中控制url

时间:2012-09-05 05:25:41

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

我使用MVC3的默认LogOn模型。 LogOn局部视图位于布局视图中。

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

登录后,网址为:

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

我不想要在URL中看到密码。 如何从URL中删除密码(也是Username,RememberMe)?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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