当前位置: 代码迷 >> ASP.NET >> 关于一个MVC3.0有关问题
  详细解决方案

关于一个MVC3.0有关问题

热度:341   发布时间:2013-02-25 00:00:00.0
关于一个MVC3.0问题
我看到AccountController.cs中
C# code
  [HttpPost]        public ActionResult LogOn(LogOnModel model, string returnUrl)        {            if (ModelState.IsValid)            {                if (Membership.ValidateUser(model.UserName, model.Password))                {                    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);                    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")                        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))                    {                        return Redirect(returnUrl);                    }                    else                    {                        return RedirectToAction("Index", "Home");                    }                }                else                {                    ModelState.AddModelError("", "提供的用户名或密码不正确。");                }            }            // 如果我们进行到这一步时某个地方出错,则重新显示表单            return View(model);        }

方法中,参数有2个LogOnModel model, string returnUrl
可我在
HTML code
@model MvcApplication1.Models.LogOnModel@{    ViewBag.Title = "登录";}<h2>登录</h2><p>    请输入用户名和密码。如果您没有帐户,请 @Html.ActionLink("注册", "Register")。</p><script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script><script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>@Html.ValidationSummary(true, "登录不成功。请更正错误并重试。")@using (Html.BeginForm()) {    <div>        <fieldset>            <legend>帐户信息</legend>            <div class="editor-label">                @Html.LabelFor(m => m.UserName)            </div>            <div class="editor-field">                @Html.TextBoxFor(m => m.UserName)                @Html.ValidationMessageFor(m => m.UserName)            </div>            <div class="editor-label">                @Html.LabelFor(m => m.Password)            </div>            <div class="editor-field">                @Html.PasswordFor(m => m.Password)                @Html.ValidationMessageFor(m => m.Password)            </div>            <div class="editor-label">                @Html.CheckBoxFor(m => m.RememberMe)                @Html.LabelFor(m => m.RememberMe)            </div>            <p>                <input type="submit" value="登录" />            </p>        </fieldset>    </div>}


他的string returnUrl取到的是什么值????我不解

------解决方案--------------------------------------------------------
controller会尝试从querystring、postdata和router data中获得参数。
------解决方案--------------------------------------------------------
Account/LogOn?returnurl=/home/index

这样
------解决方案--------------------------------------------------------
这个参数是经常需要用到的,比如你不访问登陆页面,直接访问其他页面。
其他页面验证是否登陆,没登陆则跳转Account/LogOn?returnurl=xxx
这个时候这个参数就有作用了,你登陆之后就直接跳转到该页面



------解决方案--------------------------------------------------------
这种问题其实你看代码就知道他是干什么的了 不就是个跳转嘛 好歹你也搞程序的 应该要学会思考
  相关解决方案