2013-05-07 24 views
2

我得到一個簡單的對象從表單中MVC4應用數據庫添加對象,具有用戶名

portfolio = {code: xxxxx, quantity: -10}

我需要的用戶名添加到數據庫中,當我做這個插件,該插件我已經知道我可以從HTTPContext獲得。

在下面的代碼中包含這個的最好方法是什麼?我知道我需要改變我添加的對象,但是做到這一點的正確方法是什麼?

public ActionResult Add(Portfolio portfolio) 
     { 
      var ctx = new MarginEntities(); 
      ctx.Portfolios.Add(portfolio); 
      ctx.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 

回答

1

擴展Portfolio類,包括必要的屬性:

class Portfolio 
{ 
    public string Code { get; set; } 
    public int Quantity { get; set; } 
    public string Username { get; set; } 
} 

當請求來自客戶端,字段CodeQuantity被初始化,並且Username被設置爲其默認值,其爲空。所以在提交給DB之前簡單地初始化它:

public ActionResult Add(Portfolio portfolio) 
{ 
    portfolio.Username = Session["Username"]; // or however the username is stored 

    var ctx = new MarginEntities(); 
    ctx.Portfolios.Add(portfolio); 
    ctx.SaveChanges(); 
    return RedirectToAction("Index"); 
} 
1

你可以使用User對象,我把它所有的用戶都先認證?然後

User.Identity.Name 

你的投資組合對象既可以對用戶名字符串或者你可以使用一個FK到「用戶」表,並通過在Name屬性傳遞從上面得到這個ID。

然後,您可以要麼:

class Portfolio 
{ 
    ...  
    public string Username { get; set; } 
} 

如果採取這種方式,那麼你只需通過使用新的用戶名屬性設置的組合對象。

class Portfolio 
{ 
    ...  
    public int UserId { get; set; } 
} 

如果採取這種做法,那麼你將需要請求EF上下文中的用戶ID,然後填充組合的對象與返回的用戶ID

相關問題