【发布时间】:2015-02-14 02:32:50
【问题描述】:
所以我目前正在使用 Xamarin.Forms 开发一个应用程序。 Xamarin Forms 使用 MVVM 模式,我觉得使用这种模式有点舒服,但我确实有一些问题。为了简单起见,我将使用一个单页应用程序的示例。到目前为止,这就是我的结构:
MainView.xaml //View
MainView.xaml.cs //Code behind
MainViewModel.cs //ViewModel
DataAccessHelper //DAL layer helping me communicate with a REST-API & DB
Models
Other util classes
因此,对于诸如将用于使用来自 REST-API 的数据填充视图中使用的集合的逻辑放置在何处之类的东西;这很清楚。为此,我使用 ViewModel,ViewModel 与我的 DataAccessHelper 进行通信以执行操作。虽然 ViewModel 应该包含表示逻辑,但这样做是很自然的。但是,身份验证呢?无论如何,这与屏幕上显示的数据无关。但显然,这是一个必须完成的步骤,然后我才能执行任何其他请求。
所以这是我的问题:
视图是否应该直接与我的 DataAccessHelper 通信?比如说,在代码隐藏的构造函数中,我直接调用我的 DataAcess 助手进行身份验证,然后如果没问题,我继续使用 ViewModel 的方法来获取数据并填充我的组件?或者我还应该在 ViewModel 中放置一个方法用于视图进行身份验证?
即这个:
public partial class MainPage
{
private MainPageViewModel ViewModel
{
get { return BindingContext as MainPageViewModel; }
}
public MainPage()
{
ViewModel.Authenticate();
ViewModel.LoadCountries();
ViewModel.LoadCities();
InitializeComponent();
}
}
相对于这个:
public partial class MainPage
{
private MainPageViewModel ViewModel
{
get { return BindingContext as MainPageViewModel; }
}
public MainPage()
{
var dataAccessHelper = new DataAcessHelper();
dataAccessHelper.Authenticate();
ViewModel.LoadCountries();
ViewModel.LoadCities();
InitializeComponent();
}
}
或者两者都不是?这里的最佳做法是什么?甚至可能创建一个可以使用的身份验证对象。该对象将包含用于与 DAL 通信的包装方法,以及诸如持久化/获取身份验证请求中使用的用户凭据之类的内容?
想法?
【问题讨论】:
标签: mvvm xamarin xamarin.forms