asp.net-mvc-3 – MVC3 – 使用ViewModel插入 – 对象引用未设置为对象的实例
|
我有两个模型,如下所示,并尝试从一个视图将其中一个插入数据库.我创建了一个视图模型来试图这样做. public class Blog
{
public int BlogID { get; set; }
public string Title { get; set; }
public DateTime CreatedOn { get; set; }
public virtual User User { get; set; }
public virtual ICollection<BlogPost> Posts { get; set; }
}
public class BlogPost
{
public int PostID { get; set; }
public string Body { get; set; }
public DateTime CreatedOn { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
}
public class BlogViewModel
{
public Blog Blog { get; set; }
public BlogPost BlogPost { get; set; }
}
使用视图模型我发布到创建控制器: [HttpPost]
public ActionResult Create(BlogViewModel blog)
{
if (ModelState.IsValid)
{
User user = unit.UserRepository.GetUser();
blog.Blog.User = user;
blog.Blog.CreatedOn = DateTime.Now;
unit.BlogRepository.Insert(blog.Blog);
unit.BlogPostRepository.Insert(blog.BlogPost);
unit.Save();
return RedirectToAction("Index");
}
return View(blog);
}
这不断抛出错误
在线上blog.Blog.User =用户. 对我做错了什么的想法? 编辑 public ActionResult Create(Blog Blog,BlogPost post) 然后它一切工作.那么为什么不以viewmodel格式发送数据?我使用基于视图模型的视图和控制器之间的交互 @model Test.Models.BlogViewModel
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Blog</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Blog.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Blog.Title)
@Html.ValidationMessageFor(model => model.Blog.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.BlogPost.Body)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.BlogPost.Body)
@Html.ValidationMessageFor(model => model.BlogPost.Body)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List","Index")
</div>
解决方法只需重命名你的动作参数:public ActionResult Create(BlogViewModel viewModel) 有一个冲突,因为你的动作参数被称为博客,而你的视图模型(BlogViewModel)有一个名为Blog的属性.问题是默认模型绑定器不再知道在这种情况下该怎么做. 哦,如果你绝对需要你的动作参数叫做博客,那么你也可以重命名你的视图模型的博客属性. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 使用必填字段验证器更改文本框颜色 无扩展器控制
- asp.net-mvc – 条件数据注释
- 你应该在哪里定期登录asp.net-mvc?你应该使用ELMAH吗?
- asp.net-mvc – 如何使用ASP.NET 5 MVC保护Web API 6
- 在哪里可以获得有关使用MVC / ASP.NET启动C#编程的一些信息
- asp.net-mvc – LinkedIn登录ASP.NET MVC 5应用程序
- asp.net-mvc – 如何添加命名空间到自定义路由扩展
- asp.net-mvc-4 – 无法加载文件或程序集’System.Web.Http.
- ASP.NET页面方法vs Web服务
- asp.net – 如何从Date对象减去一个月?
- asp.net-mvc – 在ASP.NEt MVC 3中传递Html.Begi
- asp.net-mvc – Ninject.MVC3,将DependencyResol
- asp-classic – 如何在Classic ASP中延迟响应
- ASP.net应用程序崩溃 – 无法加载文件或程序集“
- asp.net-web-api – 交叉原始SignalR连接在协商后
- asp.net – 如何获得大型LinkedIn图像共享格式
- asp.net – 如何确定哪个按钮导致回发
- 如何下载特定版本的ASP.NET MVC 5源代码
- asp.net – 在渲染到位图之前缩放WPF内容
- asp.net-mvc-4 – 如何在服务器上安装ASP.NET MV
