【发布时间】:2014-12-11 12:17:21
【问题描述】:
如果我有这种方式的视图模型:
public class ChangePasswordVM : IChangePasswordVM
{
public bool IsValidPassword(string password)
{
return password.Length >= 7;
}
public void SetPassword(string password)
{
// set password
}
}
那么是否可以从局部视图调用 IsValidPassword 和 SetPassword 方法?
@model ViewModels.IChangePasswordVM
假设我有一个 @Html.BeginForm 并在提交时检查它是否是有效密码,如果是我调用 SetPassword 方法。
【问题讨论】:
-
不知道你的意思——你为什么要从局部视图中调用这个业务逻辑并且在提交之前呈现?你不应该在处理提交的控制器方法中这样做吗?
-
我习惯了更多的桌面客户端方法,在这种方法中,每个视图都有一个视图模型,您可以直接与之通信以验证您在视图中输入的数据。我想要一个控制器,它返回一个带有视图模型的视图,该视图稍后使用视图模型来操作服务器端数据。可能我这里的思维方式不对。
-
MVVM 上下文中的视图模型与 MVC 中的视图模型不同。在 MVC 中,您通过向控制器操作发出 Get/Post 请求来执行操作。您的 VM 中没有任何“操作”类型的方法。
-
一个视图模型应该只是你想要显示的数据的集合,而不包含任何功能。使用它将数据传输到您的部分视图中,将数据发送回您的控制器,然后存储它(在验证和检查等之后)。其他一切都与 MVC 作斗争,而不是使用它。