这不是一个新主题,但即使阅读了很多内容,我仍然不完全明白如何在我的案例中实施它们。寻找你的建议。
我有两节课。
public class Media
{
public int Id { get; set; }
public string title { get; set; }
public string description { get; set; }
public string body { get; set; }
public string ImagePath { get; set; }
}
和
public class Video
{
public int ID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string VideoLink { get; set; }
public string tags { get; set; }
}
目前我为每个MediasController
和VideosController
设置了两个控制器,每个控制器都使用MediaMain
视图和VideoMain
视图。结果我可以在两个单独的视图上显示两个对象。我们谈论的是某种媒体博客网站,新闻可能不同,它们可能只是文字,文字+图片或文字+视频。每个新的“媒体”应该填充在一个视图上。
如果我们在高层讨论,我想我应该创建一个新的viewModel类来收集我需要在viewmodel页面上显示的那些字段,对吧?这就是我所拥有的:
public class MediaViewModel
{
public class Media
{
public string title { get; set; }
public string description { get; set; }
public string body { get; set; }
public string ImagePath { get; set; }
}
public class Video
{
public string Title { get; set; }
public string Description { get; set; }
public string VideoLink { get; set; }
}
}
现在,如果正确的话我应该有一个由这个类组成的ViewModelController,对吗?或许我需要两个班级的集合? 我的意思是这样的:
public class MediaViewModel
{
public class Media
{
public string title { get; set; }
public string description { get; set; }
public string body { get; set; }
public string ImagePath { get; set; }
**public Video Video{ get; set; }**
}
}
请帮忙。
答案 0 :(得分:4)
你走在正确的轨道上,除了你的班级定义应该是这样的:
public class MediaViewModel
{
public Media media { get; set; }
public Video video { get; set; }
}
答案 1 :(得分:0)
你应该建立这个。这是最好的做法;
safeHandle.DangerousRelease();
您也可以在控制器中使用这样的
public MediaViewModel()
{
Foo = new List<Media>();
FooVideo = new List<Video>();
}
public IList<Media> Foo { get; set; }
public IList<Video> FooVideo { get; set; }
在使用剃须刀引擎查看时,您可以使用此示例。
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
var model = new MediaViewModel();
model.Foo.Add(new Models.Media
{
body = "test body",
description = "description",
ImagePath = "../path/path",
title = "this title"
});
return View(model);
}