2012-10-05 87 views
1

我需要從MVC 3應用程序中第一次註冊的新用戶(首先使用EF代碼)捕獲三種不同類型的信息。理想地,一個頁面(其將具有三個標籤)在ASP.NET MVC中更新多個模型

  1. 用戶信息上
  2. 補充用戶信息
  3. 優勢通過用戶選擇

賬戶控制器的寄存器的方法應該填充用戶當它發生火災時。我需要一些關於如何最好地捕獲其他數據的建議。我是否爲附加數據創建UserDetails模型?如果是的話,是否有可能從同一頁面更新? (這將是賬戶/註冊頁面,我需要在賬戶控制器中做些什麼或者模型之間的關係是否足夠?

有沒有什麼好的例子可以解釋這一點?我嘗試了MVC Contoso大學之一,但不能看到,如果我能做到這一點。

任何意見非常歡迎:)

感謝

回答

1

您可以創建一個視圖模型,將您需要的所有字段與其他模型組合在一起,然後將您的視圖強制鍵入。一旦用戶將信息提交給控制器,您將適當地處理每個屬性。

public class RegisterViewModel() 
{ 
    //Userinfo 
    public string UserName {get; set;} 
    ... 
    //Extended user info 
    public string FirstName {get; set;} 
    public string LastName{get; set;} 
    ... 
    //Benefits 
    public string BenefitName {get; set;} 
    ... 
} 

然後

[HttpPost] 
public ActionResult Register (RegisterViewModel viewModel) 
{ 
    //grab the user info from the view model and process it 
    viewModel.UserName... 

    //grab the extended info and process it 
    viewModel.FirstName... 
    //grab the benefit info and process it 
    viewModel.BenefitName... 
} 
+0

感謝您的幫助。我嘗試了你的建議,但在嘗試註冊時仍然出現類似的錯誤 - 對象引用未設置爲對象的實例。 - newuser.UserDetails.Firstname = viewModel.Firstname; –

+0

究竟什麼是空? –

+0

啊,我還沒有創建NewUser的實例。做到現在和所有的工作。謝謝 –

0

的單一視圖只能有一個模型。你可以把你需要的所有信息放在那裏。這是最簡單的解決方案。您的視圖模型無需映射到您在其他地方使用的課程,因此您可以在一個模型中將用戶信息,擴展用戶信息和用戶選擇的益處都放在其中。

或者,您可以將這個過程分爲兩步或三步,但您說過不需要這個過程。