在家里重建个人Web应用程序时,我一直试图坚持对MVC的严格解释,但是我遇到了一些问题。
该应用程序是财务跟踪应用程序。我停留在第一页上,该页面只是该月银行帐户交易的列表。交易清单是我的模型。此时,可以很容易地想到Controller和View。
但是,我在页面顶部还有两个按钮。它们是箭头,一个对应于上个月的箭头,另一个对应于下个月的交易列表。如果上个月/下个月没有交易,我不希望启用这些按钮,因此我需要与数据库进行对话,以确定每个按钮是否应该实际链接到某个地方。
从我所读的大部分内容来看,应尽可能将数据库访问封装在模型中,而在Controllers和Views中则几乎没有数据库访问。
但是,这些按钮本质上需要询问数据库:“下个月/前几个月是否有任何交易?” 答案将确定是否禁用了它们的链接,以及将用户发送到何处。
严格来说,将其逻辑放入“事务列表”模型似乎不合适,因为是否存在超出请求范围的事务不在事务列表模型的考虑范围之内。
我想我也可以创建另一个模型,该模型对应于存在交易的所有年月组合。然后,我可以将此模型和事务列表传递给正确的视图。
还是我应该偏离“无数据库访问外部”模型范式,而只是向视图中抛出一些快速的数据库查询(因为结果本质上是一个UI问题,使导航更加容易)?
你们如何看待这个概念性问题?
顺便说一句,我没有使用任何框架。这是一个宠物项目,旨在使我更加熟悉MVC模式的细节。
想知道,使用扩展方法是否会有任何问题Task<T>:
public static T Await<T>(this Task<T> task)
{
var result = default(T);
Task.Run(async () => result = await task).Wait();
return result;
}
Run Code Online (Sandbox Code Playgroud)
对于那些你希望从a获得结果的实例来说,这似乎是一个不错的节省时间,Task但是你的方法没有标记async.