2

我需要从首次在 MVC 3 应用程序中注册的新用户(首先使用 EF 代码)捕获三种不同类型的信息。理想情况下在一页上(将有三个标签)

  1. 用户信息
  2. 扩展用户信息
  3. 用户选择的好处

帐户控制器的注册方法应在触发时填充用户表。我需要一些关于如何最好地捕获其他数据的建议。我是否为附加数据创建了一个 UserDetails 模型?如果是这样,是否可以从同一页面更新?(这将是 Account/Register 页面。我是否需要在帐户控制器中执行某些操作,或者模型之间的关系是否足够?

有什么好的例子可以解释这一点吗?我尝试了 MVC Contoso University 之一,但看不到我是否能做到这一点。

非常欢迎任何建议:)

谢谢

4

2 回答 2

2

您可以创建一个视图模型,该模型将您需要的其他模型的所有字段组合在一起,并强烈键入您的视图。一旦用户将信息提交回控制器,您将适当地处理每个属性。

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...
}
于 2012-10-05T17:46:35.647 回答
0

一个视图只能有一个模型。你可以把你需要的所有信息放在那里。这是最简单的解决方案。您的视图模型不必映射到您在其他地方使用的类,因此您可以在一个模型中拥有用户信息、扩展用户信息和用户选择的好处。

或者,您可以将其设置为两步或三步的过程,但您说您不希望这样做。

于 2012-10-05T16:05:33.390 回答