0

我昨天安装了 Visual Studio 2012(RTM,通过 mytt DreamSpark 帐户)并创建了一个演示 MVC 站点(使用 .NET 4.0,因为我希望它在 Azure 上得到支持)。

我已经开始调查这个项目,除了使用外部服务(Facebook、Twitter、Windows Live 和 Google)的内置选项外,我发现整个会员模式已经改变:

新结构包含 4 个表(UserProfile 是第一个代码方法实体框架表)。请注意,尽管表前缀是“webpages_”,但它是一个正确的 MVC 4 站点。

我打开了 AccountModels.cs 文件,发现它也被更改了:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;

namespace MyGuestbook.Models
{
    public class UsersContext : DbContext
    {
        public UsersContext()
            : base("DefaultConnection")
        {
        }

        public DbSet<UserProfile> UserProfiles { get; set; }
    }

    [Table("UserProfile")]
    public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }
    }

    public class RegisterExternalLoginModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

        public string ExternalLoginData { get; set; }
    }

    public class LocalPasswordModel
    {
        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Current password")]
        public string OldPassword { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "New password")]
        public string NewPassword { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm new password")]
        [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }

    public class LoginModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [Display(Name = "Remember me?")]
        public bool RememberMe { get; set; }
    }

    public class RegisterModel
    {
        [Required]
        [Display(Name = "User name")]
        public string UserName { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirm password")]
        [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
        public string ConfirmPassword { get; set; }
    }

    public class ExternalLogin
    {
        public string Provider { get; set; }
        public string ProviderDisplayName { get; set; }
        public string ProviderUserId { get; set; }
    }
}

所以我想问一下: - 这是新用户结构(从 asp_regsql.exe 生成)还是特定于模板的结构?- 有人有关于新结构以及如何与之集成的任何文档吗?- 有谁知道如何将具有旧结构的“旧”项目(例如 MVC 3 项目)迁移到新项目?

谢谢!:)

4

1 回答 1

1

我找到了一些回答我的问题的文章。

编辑: 为什么突然改变: 改变是因为微软改变了默认的 ASP.NET MVC 4 模板。提供默认帐户管理的标准“Internet 应用程序”模板已更改,现在使用 WebMatrix 2 助手。AccountController 已被完全重写,以便使用SimpleMembership支持第三方集成的类,并使我们能够使用实体框架代码优先方法。

旧会员提供程序的使用 只要我读过,因为SimpleMembership使用您的类ExtendedMembershipProvider不能使用默认的通用提供程序,必须使用内置提供程序或创建ExtendedMembershipProvider自定义提供程序。

可以在此处找到更多信息: 使用新的 ASP.NET WebForms 和 ASP.NET MVC 4 模板实现成员资格提供程序

干杯!

于 2012-09-04T12:43:43.740 回答