我有部分视图处理某个模型。 如何从没有关于该模型的引用的视图中将它传递给局部视图?
我的部分观点有:
@model MyNS.Models.NewsComment
我如何致电:
@Html.Partial("CommentForm", Model.NewsComments.SingleOrDefault()) //does not work
答案 0 :(得分:0)
假设您对模型的视图没有引用它,您可以执行以下操作:
@{
var repo = new Models.MyRepo();
var partialModel = repo.GetAll();
}
@Html.Partial("CommentForm", partialModel)
但这完全违反了ASP.NET MVC的Seperation of Concerns
理论。
我要做的是将它作为模型传递给视图(如果我不在视图中使用它,则将事件传递给视图)并将其传递给我的视图中的Partial。这样你就可以处理来自控制器的数据访问,这是更好的方法。
<强>更新强>
我刚刚看到你对错误发表评论。在这种情况下,你会做的是如下更好的方法(我上面展示的第一个案例也适用于此):
按如下方式创建ViewModel:
public class MyViewModel {
public MyNS.Models.News News {get; set;}
public MyNS.Models.NewsComment NewsComment {get; set;}
}
然后按照以下方式传递您的观点:
var viewModel = new MyViewModel();
viewModel.News = repo.GetNews();
viewModel.NewsComment = repo.GetNewsComment();
retun View(viewModel);
然后按照以下方式在您的视图上进行操作:
@Html.Partial("CommentForm", Model.NewsComment)
答案 1 :(得分:0)
根据错误,模型中的NewsComments属性类型为IEnumerable<News>
,而它应该是IEnumerable<NewsComment>
可能您使用LINQ查询使用错误的select语句填充模型的NewsComments属性。