部分视图与空页面ASP MVC 3

时间:2013-05-10 08:38:33

标签: c# sql-server asp.net-mvc-3 visual-studio-2010

我正在使用C#和SQL Server 2005开发ASP.Net MVC 3应用程序。我正在使用实体框架和代码优先方法。

我有一个LOG ON(连接)接口,它与我的基地有关,我有一个USER表(包含登录名+密码)。

这是连接视图:LogonPartial.acx(从UserViewModel强类型的局部视图)

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MvcApplication2.ViewModels.UserViewModel>" %>


<%
    if (Request.IsAuthenticated) {
%>

        Welcome <strong><%: Page.User.Identity.Name %></strong>!
        [ <%: Html.ActionLink("Log Off", "LogOff", "Account") %> ]
<%
    }
    else {
%> 
        [ <%: Html.ActionLink("Log On", "LogOn", "Account") %> ]
<%
    }
%>

当连接成功时:我只有“登录”链接。 连接失败时:页面为空

这是控制器:

[ChildActionOnly]
        public ActionResult LogedInUser()
        {
            var user = new UserViewModel();
            if (Request.IsAuthenticated)
            {
                user.Nom_User = User.Identity.Name;
            }
            return PartialView(user);
        }
private GammeContext db = new GammeContext();
        [AcceptVerbs(HttpVerbs.Post)]
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings",
            Justification = "Needs to take same parameter type as Controller.Redirect()")]
        public ActionResult LogedInUser(string Matricule, string passWord, bool rememberMe, string returnUrl)
        {
            if (!ValidateLogOn(Matricule, passWord))
            {
                return Connection(Matricule, passWord, returnUrl);
            }

            //FormsAuth.SignIn(Matricule, rememberMe);

            if (!String.IsNullOrEmpty(returnUrl))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }

        public ActionResult Connection(string Matricule, string passWord, string returnUrl)
        {
            List<User> users = db.Users.ToList();
            ActionResult output = null;

            if (users.Any())
            {
                foreach (User u in users)
                {
                    if ((u.Matricule == Matricule) && (u.passWord == passWord))
                    {
                        output = View();
                    }
                }
            }
            else
            {
                output = Redirect(returnUrl);
            }

            return output;
        }

2 个答案:

答案 0 :(得分:1)

我看不到您在哪里验证用户身份?如果你试试这个怎么办:

if (!ValidateLogOn(Matricule, passWord))
{       
   return Connection(Matricule, passWord, returnUrl);
}

// user is valid, authenticate
FormsAuthentication.SetAuthCookie(Matricule, true);

答案 1 :(得分:1)

您的ActionLink需要正确更新。

应采用上例中的格式:

<%: Html.ActionLink("Text on UI", "MethodNameInController", "ControllerName") %>

您还没有完成上述操作 - 您的操作链接在控制器中没有方法。我还建议你阅读本教程 -

http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/intro-to-aspnet-mvc-3