0

저는 ASP.NET mvc 4 템플릿을 사용하여 응용 프로그램을 만듭니다.RadioButton DB에 Null 저장 [ASP.NET MVC 4]

UserProfile 입력란에 UserType 문자열을 생성하고 데이터베이스를 업데이트하기 위해 이전 작업을 수행했습니다. 맞습니다.

등록보기에서 새 사용자를 등록하면 응용 프로그램이 모든 필드를 저장하지만 UserType, null을 저장합니다. 어떻게 해결할 수 있습니까? 비슷한 질문을 가진 몇 가지 주제를 읽었지 만, 어떻게 작동 할 지 모르겠습니다. 아래에 내 코드 : @StephenMuecke의 도움으로

, 나는 여기에 코드 업데이트를 게시하도록하겠습니다 문제가 아직 해결되지 않은 :

//Models 
[Table("UserProfile")] 
     public class UserProfile 
     { 
      [Key] 
      [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
      public int UserId { get; set; } 
      public string UserName { get; set; } 
      public string UserType { get; set; } //flag de tipo usuário musico ou ouvinte 


     } 

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; } 

     [Required] 
     [Display(Name = "Tipo de Usuario")] 
     public string UserType { get; set; } 


    } 

//Controller 
     // GET: /Account/Register 

     [AllowAnonymous] 
     public ActionResult Register() 
     { 
      return View(); 
     } 

     // 
     // POST: /Account/Register 

     [HttpPost] 
     [AllowAnonymous] 
     [ValidateAntiForgeryToken] 
     public ActionResult Register(RegisterModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       // Attempt to register the user 
       try 
       { 
        var user = new UserProfile() { UserName = model.UserName, UserType = model.UserType }; 

        WebSecurity.CreateUserAndAccount(model.UserName, model.Password); 
        WebSecurity.Login(model.UserName, model.Password); 
        return RedirectToAction("Index", "Home"); 

       } 
       catch (MembershipCreateUserException e) 

       { 
        ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); 
       } 
      } 

//View 
@model TestTcc2.Models.RegisterModel 
<div class="form-group"> 
         <label for="icode" class="col-md-3 control-label">Tipo de usuário</label> 
         <div class="col-md-9"> 
          @*Html.DropDownListFor(m=> m.UserType, userTypes)*@ 
          @Html.RadioButtonFor(m => m.UserType, "Ouvinte", new { id = "Ouvinte" }) 
          @Html.Label("Ouvinte") 
          @Html.RadioButtonFor(m=>m.UserType, "Musico", new { id= "Musico" }) 
          @Html.Label("Musico") 
         </div> 
        </div> 

편집 :

가 함께이 문제를 해결하려면 radiobutton, UserProfile 클래스를 호출하는 Post Register 메서드를 업데이트해야합니다. http://pastebin.com/Mwd4QD6U

그리고 지금은 내가 등록 항목 링크시는군요 예외 오류에 대해 질문 할 수있는 새로운 주제를 만들 수 있어요 :

코드입니다 MemberShipException during the User Register at ASP.NET

+0

'UserType' "Ouvinte"와 "Musico"에 가능한 값이 있습니까? –

+0

값은 RadioButtonFor에서 정의됩니다. 즉, Ouvinte 및 Musico입니다. @StephenMuecke –

답변

1

을 시도해보십시오

@Html.RadioButtonFor(m => m.UserType, "Ouvinte", new { id = "Ouvinte" }) 
@Html.Label("Ouvinte") 
@Html.RadioButtonFor(m=>m.UserType, "Musico", new { id= "Musico" }) 
@Html.Label("Musico") 
+0

작동하지 않습니다 ... 어쩌면 컨트롤러 클래스에 대한 업데이트가 필요한지 알 수 있습니까? –

+0

그냥 내 프로젝트에서 테스트하고 잘 작동합니다. POST 메서드 서명은 무엇입니까? –

+0

이것은 내 게시물이며 AccountController 클래스의 메서드를 가져옵니다. http://pastebin.com/KNn8GPkG 라디오 버튼이 제대로 작동하지 않을까 걱정됩니다. –