我是MVC的新手。我正在用asp.net MVC开发一个web应用程序。我有一个表单,通过它用户可以获得注册,注册后,用户重定向到ProfileView.aspx页面。在这里之前一切都很好。
现在,我想在他的个人资料下面显示该用户发布的文章标题。现在,我使用了以下代码:
public ActionResult ProfileView(int id)
{
Profile profile = profileRepository.GetProfileByID(id);
var articles = articlesRepository.FindArticlesByUserID(id).ToList();
return View("ProfileView", profile);
}感谢您提前提供帮助
Baljit Grewal
发布于 2009-05-07 13:41:12
我能想到两个选择:
使用ViewData字典存储文章。
public ActionResult ProfileView(int id)
{
Profile profile = profileRepository.GetProfileByID(id);
var articles = articlesRepository.FindArticlesByUserID(id).ToList();
ViewData["Articles"] = articles;
return View("ProfileView", profile);
}或者,如果您希望避免使用ViewData,请创建一个ViewModel。ViewModel是一种数据传输对象。您可以像这样创建一个ProfileViewModel类:
public class ProfileViewModel
{
public Profile Profile{ get; set; }
public IList<Article> Articles { get; set; }
}或者只包含您在视图中使用的配置文件属性,这将使绑定更容易,但您必须将值从模型复制到控制器中的ViewModel:
public class ProfileViewModel
{
public int Id{ get; set; }
public string Name { get; set; }
.......
public IList<Article> Articles { get; set; }
}如果你选择最后一个选项,看看AutoMapper (一个对象到对象的映射器)。
发布于 2009-05-07 05:36:14
您将希望页面继承自ViewPage,然后可以在.aspx标记中使用模型,如下所示
https://stackoverflow.com/questions/833013
复制相似问题