2014-09-13 2 views
0

사용자가 신입 사원을 생성 할 수있는 양식이 있습니다. 양식을 제출하는 db에 사용자 ID를 저장하고 싶습니다. 나는 두 개의 테이블이MVC에서 양식을 제출하는 사용자 ID로 데이터베이스 업데이트

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(Employee employee) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Employee.Add(employee); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

     return View(employee); 
    } 

:

이것은 새 항목을 작성하기위한 내 컨트롤러입니다. 하나는 직원 용이고 다른 하나는 사용자 용입니다. 당신이 볼 수 있듯이 내 직원 테이블에 UserID을 가지고 있으며 양식을 제출하는 사용자 아이디를 저장하고 싶습니다. 직원 테이블에 양식 값을 저장할 수 있지만 사용자 ID를 가져올 수 없습니다. 어떤 생각?

<section id="loginForm"> 
    <h2>Use a local account to log in.</h2> 
    @using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) { 
@Html.AntiForgeryToken() 
@Html.ValidationSummary(true) 

<fieldset> 
    <legend>Log in Form</legend> 
    <ol> 
     <li> 
      @Html.LabelFor(m => m.UserName) 
      @Html.TextBoxFor(m => m.UserName) 
      @Html.ValidationMessageFor(m => m.UserName) 
     </li> 
     <li> 
      @Html.LabelFor(m => m.Password) 
      @Html.PasswordFor(m => m.Password) 
      @Html.ValidationMessageFor(m => m.Password) 
     </li> 
     <li> 
      @Html.CheckBoxFor(m => m.RememberMe) 
      @Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" }) 
     </li> 
    </ol> 
    <input type="submit" value="Log in" /> 
</fieldset> 
    } 
    </section> 
+2

'와 (과) 같은 형식의 필드가 있습니까? –

+0

@asdf_enel_hak 아니요. 그 사용자는 이미 로그인되어 있습니다. 그래서 UserProfile 테이블에 저장된 그의 userid를 얻고 싶습니다. – sensahin

답변

1

당신은 아래에 이것을 시도한다 :

public class UsersContext : DbContext 
{ 
    public UsersContext() 
     : base("DefaultConnection") 
    { 
    } 

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

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

[Table("Employee")] 
public class Employee 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int EmployeeID { get; set; } 
    public string EmployeeName { get; set; } 
    public int DepartmentID { get; set; } 
    public string Department { get; set; } 
    public int UserId { get; set; } 
} 

는이 내 로그인 양식입니다. 나는 당신이 당신 자신의 논리와 비교할 수있는 것들을 놓치고 있다고 생각한다.

using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Data.Entity; 
using System.Linq; 
using System.Web; 

class Program 
{ 

    private static void Main(string[] args) 
    { 
     UsersContext context = new UsersContext(); 



     string currentUserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
     if (string.IsNullOrWhiteSpace(currentUserName)) 
     { 
      currentUserName = HttpContext.Current.User.Identity.Name; 
     } 
     var currentUser = (from u in context.UserProfiles 
          where u.UserName.Equals(currentUserName) 
          select u).FirstOrDefault(); 

     if (currentUser != null) 
     { 
      context.Employee.Add(new Employee() { EmployeeName = "Mr. Codebased", UserID = currentUser.UserId }); 
      context.SaveChanges(); 

      var userProfile = context.Employee.Include("User").FirstOrDefault().User; 
     } 

    } 

    public class UsersContext : DbContext 
    { 
     public UsersContext() 
      : base() 
     { 
     } 

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

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

    [Table("Employee")] 
    public class Employee 
    { 
     [Key] 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int EmployeeID { get; set; } 
     public string EmployeeName { get; set; } 

     public int UserID { get; set; } 
     public UserProfile User { get; set; } 
    } 

} 
+0

실제로 등록 된 사용자와 로그인 한 사용자 만 양식을 제출할 수 있기 때문에 이미 사용자 ID가 있습니다. 그래서 나는 이미 UserProfile에 userid를 가지고있다. 하지만 그 사용자가 양식을 제출하면 거기에서이 사용자 ID를 가져와 Employee 테이블에 저장하는 방법을 모릅니다. – sensahin

+1

어떤 인증을 사용하고 있습니까? – codebased

+1

위의 업데이트를 참조하십시오. – codebased

관련 문제