【发布时间】:2012-02-20 01:25:24
【问题描述】:
我有一个这样的视图模型:
public class EditVM
{
public Media.Domain.Entities.Movie Movie { get; set; }
public IEnumerable<Genre> Genres { get; set; }
}
电影是我想要编辑的真实实体。流派只是用来填充下拉列表。当我打电话时,我更愿意这样做:
@Html.TextBoxFor(m => m.Movie.Title)
在我的强类型视图中,输入控件有一个名称 = "Title" 而不是 "Movie.Title"
我不希望通过使用ViewData 等将我的视图拆分为部分视图或丢失我的强类型视图。
有没有办法向视图表达我不希望有Movie. 前缀?我注意到您可以设置:
ViewData.TemplateInfo.HtmlFieldPrefix = "x";
在控制器中,但不幸的是,它似乎只允许添加 additional 前缀。将其设置为 "" 没有任何作用。
有什么解决办法吗?或者,如果我希望保留强类型视图和 lambda,我是否坚持使用在这种情况下实际上并不需要的不幸前缀?
感谢您的帮助。
更新:
这里的控制器操作可能会让事情变得更清晰。
public ActionResult Edit(int? id)
{
var vm = new EditVM
{
Movie = id.HasValue ? _movieSvc.Find(id.Value) : new Movie(),
Genres = AppData.ListGenres()
};
return View(vm);
}
[HttpPost]
public void Edit([Bind(Prefix = "Movie")]Movie m)
{
_movieSvc.AddOrUpdateMovie(m); //Exceptions handled elsewhere
}
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 model-view-controller view