【发布时间】:2012-07-30 03:50:59
【问题描述】:
MVC3 项目。
我有几个类:我在视图模型中设置的帐户、地址、电话等
namespace ViewModels
{
public class AccountVM
{
public Account Account { get; set; }
public Address Address { get; set; }
public Phone Phone { get; set; } }
在控制器的 GET 操作中我只是调用视图
public ActionResult Create()
{ return View(); }
在视图中我通过视图模型
@model AccountVM
然后我使用@Html.EditorFor 填充所有字段并成功地将其传递给POST 操作并在数据库中创建记录。所以所有的代码都在工作。
@Html.EditorFor(z => z.Account.Number)
当我尝试预填充一些属性时,问题就出现了。我在 GET 操作中执行以下操作。
public ActionResult Create()
{ var viewModel = new AccountVM();
viewModel.Account.Number = 1000000;
return View(viewModel); }
代码通过 Intellisense,但运行时出现“用户代码未处理 NullReferenceException - 对象引用未设置为对象实例”错误。
如果我尝试使用视图中的代码进行填充,我会遇到同样的错误。
@{ Model.Account.Number = 1000000; }
我需要能够以编程方式填充控制器和视图中的属性。我已经阅读了几篇关于如何在控制器中填充视图模型并在它们上建模我的代码的 SO 帖子,但由于某种原因我的代码无法正常工作。我在这里做错了什么?我应该如何在控制器和视图中处理它?我知道对象在创建时为空,但不知道如何解决。
谢谢
【问题讨论】:
标签: asp.net-mvc-3 asp.net-mvc-viewmodel