c# – MVC3默认会员属性,在视图中具有自定义模型属性(使用ModelV
我已经开始学习MVC3开发并且遇到了一些绊脚石.在我的项目中,我已将默认的aspnet_ membership表移动到单独的SQL Server 2008 Express数据库中.然后我添加了自己的表来保存额外的配置文件数据.我现在想要构建一个视图,列出用户名(来自aspnet_Users),电子邮件地址(来自aspnet_Membership),名字和姓氏(来自自定义构建表UserDetails,用户ID为PK和FK到aspnet_Users)和用户角色( aspnet_UsersInRoles和aspnet_Roles).
到目前为止,为了从我的数据库中读取和写入,我已经使用dbcontext类为每个自定义构建的表构建了模型: public class UserDetail { [Key] public Guid UserId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Address { get; set; } public string City { get; set; } public string State { get; set; } public string Zip { get; set; } public string Phone { get; set; } public DateTime DateUpdated { get; set; } } public class UserLinkToken { [Key] public Guid UserId { get; set; } public string LinkToken { get; set; } public DateTime DateUpdated { get; set; } } public class ProShotDB : DbContext { public DbSet<UserDetail> UserDetails { get; set; } public DbSet<UserLinkToken> UserLinkTokens { get; set; } } 我必须为我的应用程序命名我的表“UserDetails”和“UserLinkTokens”来编写和更新我的数据库,当模型和dbcontext的名称与我的数据库和表名不匹配时,应用程序将最终创建另一个数据库表并在那里写入数据. 从我可以告诉发送一个对象来查看aspnet_表的属性和我的自定义表中的属性,我将要构建一个ModelView.在阅读了很多模型视图示例之后,我仍然不清楚应该如何查找我的应用程序. 有人可以给我一个模型视图的例子,我可以用它来显示数据行列表并更新给定用户ID的模型视图中引用的所有相应表列吗? 举个例子,我想要一个所有FirstNames(UserDetails表)及其相应的电子邮件(aspnet_Membership)的视图. 我的最终目标是显示用户指定角色的视图.列出的每个用户都有一个链接,该链接将指向一个控制器,如果他们当前不具有该角色,则将其分配为管理员,如果他们当前是管理员,则删除管理员角色. 很抱歉,如果此类问题之前已在其他问题中得到解答.我已经阅读了其中的一些,觉得他们可能应该回答我的问题,但似乎没有一个匹配.很可能我的困惑源于不完全理解我的应用程序如何连接到我的数据库.我理解我的模型表示一个表的一行数据,dbcontext接受一组这些数据行模型并将其连接到数据库中的表(dbset<(datarow / model object)>(数据行表) /一组模型对象)).由于我没有看到aspnet_ tables / model对象的dbcontext类,因此我没有很好地了解这些表中的数据如何被检索,更新或写入. 感谢任何帮助,清除我对它的工作原理的无知,或者给我一个如何完成我需要的简单例子. 解决方法
首先,它被称为视图模型,而不是ModelView.视图模型只是一个为视图目的而定制的类.它通常仅包含该视图所需的数据,并包含用于处理验证和演示的数据注释等内容.
因此,您只需创建一个包含要在视图中显示的所有数据的模型.这就是构建视图模型的全部内容. 所以你的视图模型就是这样 public class MyViewModel { public string FirstName {get;set;} public string Email {get;set;} } 然后在您看来,您只需执行以下操作: @model MyViewModel @using(Html.BeginForm()) { @Html.EditorForModel() <input type="submit" /> } 在您的控制器中(或者更好,在业务层中),您只需执行查询以检索用户名和电子邮件,然后将查询结果中的值复制到视图模型中. 更新数据时,请执行相反的操作.虽然在这样的帖子中进行讨论,但这个概念确实太大了.您应该查看示例代码,例如MVC Music Store或Nerd Dinner. 重要的是要记住.成员资格是与其他表格完全独立的系统.您必须单独检索它们,并单独更新它们.使用Membership API更新成员电子邮件或其他详细信息,并使用您自己的表来更新数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |