我应该如何使用 MVVM 模式在模型中获取用户输入?

How should I get user input in a model using MVVM pattern?

我正在使用 C# 和 MVVM 模式编写程序。该程序有在线连接,需要登录。我创建了一个模型 class 来处理登录过程。

登录过程是这样的:登录凭据(用户名和密码)在线发送到登录页面,登录成功后,服务器发回登录cookie。我将这些 cookie 存储在本地,并随服务器的每个请求一起发送,直到它们过期。

我在模型中创建了一个 GetLoginCookies() 方法,我希望它是获取登录 cookie 的唯一方法。该方法中的登录如下:获取存储的登录cookie,并与服务器进行验证。如果没有登录 cookie,或者它们无效(例如过期),则要求用户提供新的凭据,并将它们发送到服务器并获取新的登录 cookie。

我想用一种方法处理所有事情的原因是,我想有一种方法总是给我有效的登录 cookie(或中止操作),我可以在与服务器进行任何通信之前使用它。

我的问题是,使用 MVVM 模式时实现用户输入的最佳方式是什么?

您想要的不是模型,而是服务。服务只是一个实用程序 class,可以通过依赖注入将其注入到您的 ViewModel 中(您正在使用 IoC?)

考虑到登录只是系统的一部分,执行其他网络调用需要 cookie,我会为完整的服务器交互创建一个服务。这样服务可以在内部保留 cookie,您的应用程序不必担心登录交互的细节。

例如

public class WebService {
    public void Login(string username, string password) { ... }
    public Data GetData() { ... }
    public void AddNewData(Data data) { ... }
}