0

我的控制器中有以下内容:

[HttpGet]
public ActionResult Create(int setId)
{
    // create new viewModel
    var model = new CreateCardViewModel() {SetId = setId, Sides = new List<string>(){"Front Side", "Back Side"}};

    return View(model);
}

我应该将 int 传递给 CreateCardViewModel 来构建模型吗?或者这种方法合适吗?

ViewModel 是否经常包含业务逻辑?

4

2 回答 2

0

ViewModel 不包含业务逻辑。它们基本上是一个用于输出到视图的虚拟类。

我不会说有一种“正确”的方式来加载 ViewModel,但有多种方法可以做到这一点。我个人在 viewmodel 的构造函数方法中加载页面的任何默认值,并在控制器中加载任何特定于页面的内容,就像您在示例中一样。

我还使用了一个基本视图模型,它被设置为_layout页面的模型。这包含您的页面标题/元内容/等内容。

例如

public abstract class BaseViewModel
{
    public string Title {get;set;}

}

public sealed class HomeViewModel : BaseViewModel
{
    public string HomeText {get;set;}
}

我不相信这样的方法是对还是错,只要使用你觉得舒服的技术。

于 2013-02-15T03:18:01.460 回答
0

如果您想确保将对象放在一个地方,构造函数很有用。它们有助于避免对象在无效状态下初始化的情况(例如,您忘记设置对象属性之一,这是进一步处理所必需的)。在视图模型的情况下,最好有输出模型的构造函数。但是您不能对输入模型(操作方法的参数)使用构造函数,因为它们被需要公共构造函数的 MVC 运行时反序列化。

于 2013-02-15T10:13:31.913 回答