 悬赏园豆:100
                [已解决问题] 
            
                    解决于 2013-10-17 22:14
                悬赏园豆:100
                [已解决问题] 
            
                    解决于 2013-10-17 22:14 
                 
        model
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.EnterpriseServices;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;
namespace MvcB2CBookOnlineShopping.Models
{
//以业务为主的用户模式
 [Table("Users")]
 public class Users
 {
 [Required]
 public int ID { get; set; }
[Required(ErrorMessage = "请输入用户邮箱")]
 [Display(Name = "邮箱")]
 [DataType(DataType.EmailAddress)]
 public string Email { get; set; }
[Required(ErrorMessage = "请输入密码")]
 [Display(Name = "密码")]
 [DataType(DataType.Password)]
 [StringLength(20, ErrorMessage = "{0}在{2}位至{1}位之间", MinimumLength = 6)]
 public string Pwd { get; set; }
[Display(Name = "重复密码")]
 [DataType(DataType.Password)]
 [Compare("Pwd", ErrorMessage = "密码与重复密码必须相同")]
 public string RePassword { get; set; }
[Display(Name = "邮箱")]
 [DataType(DataType.Text)]
 public string Question { get; set; }
[Display(Name = "答案")]
 [DataType(DataType.Text)]
 public string Answers { get; set; }
[Display(Name = "头像")]
 [DataType(DataType.ImageUrl)]
 public string Image { get; set; }
[Display(Name = "昵称")]
 [DataType(DataType.Text)]
 public string Nickname { get; set; }
[Display(Name = "居住地")]
 [DataType(DataType.Text)]
 public string Residence { get; set; }
[Display(Name = "性别")]
 [DataType(DataType.Text)]
 public string Sex { get; set; }
[Display(Name = "身份")]
 [DataType(DataType.Text)]
 public string Position { get; set; }
[Display(Name = "生日")]
 [DataType(DataType.DateTime)]
 public string Birthday { get; set; }
[Display(Name = "博客")]
 [DataType(DataType.Text)]
 public string Blog { get; set; }
[Display(Name = "居住状态")]
 [DataType(DataType.Text)]
 public string Status { get; set; }
[Display(Name = "爱好")]
 [DataType(DataType.Text)]
 public string Hobby { get; set; }
[Display(Name = "偶像")]
 [DataType(DataType.Text)]
 public string Idol { get; set; }
}
////以页面为主的用户登陆模型
//以页面为主的用户注册模式
 public class RegeditModel
 {
 public string ID { get; set; }
[Required(ErrorMessage = "请输入用户邮箱")]
 [Display(Name = "邮箱")]
 [DataType(DataType.EmailAddress)]
 public string Email { get; set; }
[Required(ErrorMessage = "请输入密码")]
 [Display(Name = "密码")]
 [DataType(DataType.Password)]
 public string Pwd { get; set; }
[Display(Name = "重复密码")]
 [DataType(DataType.Password)]
 public string RePassword { get; set; }
 }
 public class BookOnlineShoppingSystemDBContext : DbContext
 {
 public DbSet<Users> BookOnlineShoppingSystem { get; set; }
 }
}
view
 
@model MvcB2CBookOnlineShopping.Models.RegeditModel @{ ViewBag.Title = "testcreate"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>testcreate</h2> @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>RegeditModel</legend> <div class="editor-label"> @Html.HiddenFor(model => model.ID) @Html.LabelFor(model => model.Email) </div> <div class="editor-field"> @Html.EditorFor(model => model.Email) @Html.ValidationMessageFor(model => model.Email) </div> <div class="editor-label"> @Html.LabelFor(model => model.Pwd) </div> <div class="editor-field"> @Html.EditorFor(model => model.Pwd) @Html.ValidationMessageFor(model => model.Pwd) </div> <div class="editor-label"> @Html.LabelFor(model => model.RePassword) </div> <div class="editor-field"> @Html.EditorFor(model => model.RePassword) @Html.ValidationMessageFor(model => model.RePassword) </div> <p> <input type="submit" value="Create" /> </p> </fieldset> }
卡在了 Controllers这里。
[HttpPost] public ActionResult testcreate(RegeditModel Users) { if (ModelState.IsValid) { try { //WebSecurity.CreateUserAndAccount(Users.Email, Users.Pwd); //WebSecurity.Login(Users.Email, Users.Pwd); //return RedirectToAction("Index", "Home"); db.Users.Add(Users); db.SaveChanges(); return RedirectToAction("Index"); } catch (MembershipCreateUserException e) { ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); } } return View(Users); }
用户表字段做了很多,但注册的时候不用那么多啊。我用那个自带的create产生的页面产生太多多余的字段了,但自己做就这熊样,唉。求教啊...
还有能介绍MVC4表单这方面相关的网站教程就好了。要求代码尽量简洁,高效的。
同上,没明白问题出在什么地方;
如果字段不匹配,你可以采用一个Model,一个ViewModel的方式。
另外也可以对实体添加数据注解,不会在界面自动生成。
还可以自己控制界面,这个很灵活。
我是写在同一个类里啊,但是注册不需要添加那么多字段啊。就算用viewbag也要把其他的字段写null然后传上去?不懂啊 好晕。
@Cherbim: 前台显示的字段是你自己写的,后台数据访问也要你自己写。显示字段和保存到数据库的字段还不是你说了算。
@幻天芒: 那就是没办法像自带的那个create那样
                    db.Users.Add(Users);
          
                   db.SaveChanges();
两行代码解决是吧
@Cherbim: 可以这么说,大部分情况下还是可以的(到后台之后,你直接对Users处理一下,然后再Add)。一般有用于前台绑定的ViewModel,还有数据库交互的DataModel。
你自己再根据注册用户时需要的字段写一个模型类,然后根据这个模型类生成view的代码就行了。
我是写在同一个类里啊,但是我不知道在 Controllers里要怎么写才能把那2个字段成功更新到数据库里。
没明白楼主是哪里出现问题
就是我整个模型类写了很多字段,但是我注册的时候仅需要提交邮箱,密码这两项内容,我不知道在 Controllers里要怎么写才能把那2个字段成功更新到数据库里。
推荐看看官方Music store 源码
这个问题跟mvc几没关系
你不用那么多,直接把页面上那些表单项删掉,实体中去掉对应的RequireAttribute不就行了
我就是要上传表单数据啊同学...
@Cherbim: “我用那个自带的create产生的页面产生太多多余的字段了,但自己做就这熊样”
多余的字段是指什么,不是对应多余的表单项吗。
@空葫芦: 我把整个模型都发了啊,你看一下吧
Users myUser=new Users()
myUser.Email=Users.Email
myUser.Password=Users.Password
db.Users.Add(Users);