Questions tagged «mvc»

MVC(模型-视图-控制器)是一种软件体系结构模式,可强制将关注点分离。

4
处理模型和视图时切换与多态
我想不出更好的解决方案。我有一个显示元素列表的视图控制器。这些元素是可以作为B,C,D等的实例并从A继承的模型。因此,在该视图控制器中,每个项目都应转到应用程序的不同屏幕,并在用户选择其中的一个时传递一些数据。 。我想到的两个选择是(请忽略语法,它不是特定的语言) 1)开关(我知道那很烂) //inside the view controller void onClickItem(int index) { A a = items.get(index); switch(a.type) { case b: B b = (B)a; go to screen X; x.v1 = b.v1; // fill X with b data x.v2 = b.v2; case c: go to screen Y; etc... } } 2)多态 //inside …


3
使用MVC时处理PHP中的错误
我最近一直在使用Codeigniter,但令我不安的是处理错误并将错误显示给用户。我从来没有擅长处理错误,而不会变得凌乱。我主要关心的是何时将错误返回给用户。 使用异常和抛出/捕获异常,而不是从函数返回0或1,然后使用if / else处理错误,是一种好习惯吗?因此,使得更容易通知用户该问题。 我倾向于避开例外。几年前,我在大学的Java导师告诉我:“不应在生产代码中使用异常,它应该更多地用于调试”。我感到他在撒谎。 但是,举例来说,我有将用户添加到数据库中的代码。在此过程中,可能有不止一件事情出错,例如数据库问题,重复条目,服务器问题等。注册期间发生问题时,用户需要了解它。 记住我正在使用MVC框架,是处理PHP错误的最佳方法是什么。

1
大量使用Ajax的Web应用程序的模式
到目前为止,我一直是开发Web应用程序的MVC模式的忠实拥护者。对于网络,我主要使用PHP(使用Kohana和CodeIgniter框架)和Ruby(RoR)开发。 随着我的应用程序在Ajax方面变得越来越繁重(单页应用程序等),我注意到我不禁出卖了MVC的最基本概念:Java语言正在做大部分工作;调用控制器只是为了请求视图或更多js / json代码似乎是错误的。 在努力将所有路由作业保留在控制器中之后,现在我从根本上将其分配给控制器和Javascript(即,从框架的PoV来看,是视图的一部分)。当请求json时,MVC的转换看起来更加明显:执行请求的js代码是控制器;框架的控制器仅充当模型数据的代理-实际上是我要的。 那么,我应该研究什么? 我当时在考虑使用纯JavaScript应用程序,例如,使用ribs.js和基于文档的JSON吐出数据库(couchDB)作为后端,但是我喜欢我的关系数据库。 另一个选择如下:我只是在PHP / ruby​​ / go / whatnot中创建“路由模型”。这些将分析请求,调用数据库,并返回一些json。 这种方法对我来说似乎很有趣,但是它没有任何实质性的文档或学术分析,因此我有点害怕这种飞跃。 有想法吗?

4
使用/编写.Net自定义成员资格提供程序有哪些缺点?
最近,我在SO上发布了以下问题:https : //stackoverflow.com/questions/7197337/using-asp-net-membership-provider-with-an-existing-user-database 您可能会注意到,我最后回答了我自己的问题,指出编写/实现“自定义成员资格提供程序”看起来是一种方法。 从字面上看,几分钟后,我偶然发现了这个问题:https : //stackoverflow.com/questions/7222306/simple-login-attempt-counter-using-mvc-3-and-ajax/7222407#7222407 我尝试回答并获得评论,.Net成员资格提供程序“在许多级别上都很糟糕”。我承认,这是我第一次使用会员资格提供程序,但对我来说确实如此。 我没有看到任何支持“可怕”主张的东西,因此在实施“可怕”之前,我希望能从社区中得到一些反馈。

4
MVC和RESTful API服务
MVC非常简单。有一个模型,一个控制器和一个视图。当我们创建一个网站时,这一切都将作为一个整体' 客户端向服务器发送REST关键字请求->服务器将请求的URL与控制器操作相匹配->然后调用模型进行数据收集/处理,以获取结果->并将结果作为HTML页面(视图)返回给客户端。 如果我们正在谈论纯RESTful API Web服务该怎么办?然后,流程类似于“ 客户端向服务器发送REST关键字请求->服务器将请求的URL匹配到控制器操作->然后调用模型进行数据收集/处理,获得结果->并返回结果以JSON ' 返回给客户端。与以前相同,但是没有“视图” ...或者,可以将生成的JSON视为“视图”。从某种意义上讲,我们仅在利用MVC的MC部分。那是应该怎么做的?还是对于仅API服务而不是MVC还有其他更合适的模式吗?

1
如何将MVC模式应用于C#WinForms应用程序?
我是一名C ++开发人员,此后一直使用MVC模式来设计GUI。 最近,我想重新使用C#,并设置了Windows Forms应用程序,但现在我对如何将其推送到MVC兼容结构有些迷惑。 我当前要执行的操作是“声明”为WinForms提供的类作为视图,并在后台为Model和Controller添加类。但是,我不确定如何与事件交互,例如单击按钮。通常,我会将这些事件重定向到控制器,并在完成后对View执行操作。 但是,这对于这个星座来说是非常不满意的。例如,如果我想实现“退出”按钮,则必须将事件从View重定向到Controller,并在View中实现一个额外的公共方法,然后可以从Controller调用它,而我可以在第一个实例中简单地从View调用Close()。 您对我有什么建议吗?我对C#中的Windows窗体的理解还不够好,无法尝试MVC实现吗?我给表格课一个错误的角色吗?对于这个用例,MVC仅仅是不合适的体系结构吗?
11 c#  mvc  winforms 

2
在ASP.NET MVC中,视图模型是否应具有ID?
在开发允许更新模型的ASP.NET MVC应用程序时,您需要某种方式来了解如何获取更新的视图模型并将其与现在更新的模型匹配。似乎有几种不同的方法可以做到这一点,我想知道这些方法中是否有任何一种不正确的MVC(就像让控制器存储应在模型中存储的数据是不正确的MVC)? 所有视图模型都有一个ID:优点 始终确保可以匹配您的模型。 缺点 您必须非常小心,不要更改任何ID,否则您可以让用户更新他们不应该访问的行。 只有最基本的视图模型具有ID:优点 避免用户更新他们不应访问的数据所需的检查要少得多。 缺点 跟踪哪种视图模型与哪种模型匹配要困难得多。 您仍然必须检查一些具有ID的视图模型,以确保用户不会更新他们不应该访问的数据。 没有视图模型具有ID: 优点 无需检查ID以进行更新。 缺点 您必须放弃无国籍状态。 所以我有两个问题。 首先,是否有正确/错误的选择?(如果不是,则表示选择只是一个见解,我的第二个问题是基于见解,应该忽略。) 其次,如果有正确/错误的选择,那是什么? 为了澄清评论,我在说的是当您拥有一个类似于数据库对象的视图模型时。 认为: public class InvoiceViewModel //Does not have ID, does not relate to model. { public CustomerViewModel CustomerVM { get; set; } //Maybe has ID? Does relate to model. public AddressViewModel …
11 mvc  asp.net-mvc 

3
整个MVC网站中的全局常数值
我的MVC(.NET)在整个站点中都有一些常量值,例如电话号码,实际地址,电子邮件地址等。 我想一次存储此值,因此将来的更新更容易更改它们的详细信息。 为了简化我的问题,我只关注电话号码。 我的问题是在哪里以及如何存储此数字,这是我面临的决策问题。此刻,我选择将其作为静态方法存储在Global.asax文件中,例如 public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { //logic } public static string GetPhoneNumber() { return "012345 678 910"; } } 效果很好,在我的控制器中,我可以添加对此方法的引用并将其分配给ViewBag public ActionResult Contact() { ViewBag.Phone = MvcApplication.GetPhoneNumber(); } 在许多网站上,电话号码将显示在每个页面的顶部,因此,将其放在其中_Layout.cshtml是合乎逻辑的。 我遇到的问题是_Layout.cshtml没有控制器(我不知道),而我可以传递值的唯一方法是为每个视图(例如EG)设置一个ViewBag.Phone public class HomeController : Controller { // // GET: /Home/ public ActionResult …
11 mvc 


2
控制器应该以MVC模式将数据传递给视图吗?
我经常使用ASP.NET MVC(以及其他基于Web的MVC实现),但这是我从未确定的事情:控制器和视图是否应该通信? 当然,控制器应该选择要使用的视图,但是我的意思是控制器应该将数据传递给视图吗?我认为,如果视图期望来自控制器的数据,则它们将有效地捆绑在一起(一对控制器)。相反,我通常让视图与模型本身进行通信,并且独立于任何控制器。 我有正确的方法吗?还是这是没有一个正确答案的情况?在Web和其他环境中工作时答案是否会改变?当您具有强类型视图的概念(例如在ASP.NET MVC中)时,答案是否会改变?
11 architecture  mvc 

5
何时使用MVC
我正在用PHP和MySQL后端构建一个站点。但是,我目前不使用任何类型的框架。我应该使用Model View Controller吗?


2
应用程序服务层调用数据库功能。架构不好?
场景: 堆栈:Java,Spring,Hibernate。 型号:客户端-服务器应用程序。 模式:模型-视图-控制器(MVC)。 服务层类具有三种行为: 一些服务在方法内具有业务规则,并将持久性委托给应用程序。喜欢: EntityManager.save(entity); 一些服务只是调用数据库函数(传递参数),例如: CallableStatement cls = con.prepareCall(“ {call databaseFunction(args)}”); 某些服务同时具有两种行为的方法。 我的问题: 让应用程序服务直接调用数据库功能有什么问题吗?这不是不好的做法吗?适用于这样的项目的架构模型是什么? 在同一服务中混合行为是否有问题?如交易和一致性? 在维护的情况下,这种封装是否使开发人员不清楚他也应该更改数据库中的功能?如何避免这种情况? 这种情况是否会在世界各地的其他应用程序中发生,或者仅仅是架构错误?

2
.NET MVC项目体系结构/分层
在为中型MVC Web应用程序规划体系结构时,如何实现这些层尽可能地分离和易于测试?(基本上遵循最佳实践)假设我首先使用代码作为数据访问权限。 我为定义“业务逻辑”的定义以及与数据层交互的方式感到困惑。以车辆销售应用程序为例,业务逻辑是否是执行诸如计算给定车辆的税阶,比较每加仑英里数统计信息之类的任务的类?至于业务实体(例如汽车,货车,摩托车),我会将它们与DataContext班级一起放在数据层中。 还有什么会构成与业务相对的应用程序逻辑-我正在猜测会话/用户输入验证之类的东西? 因此,例如,汽车管理员可能会返回一个操作/查看结果,其中列出了按类型和最佳mpg过滤的前十名汽车。假设我有一个ICarRepository“ carRepo”注入到我的控制器中(使用存储库模式/ DI),我从一个动作方法参数中过滤了我的汽车var cars = carRepo.getCarsByType("hatchback"); 因此,我已使用存储库将数据访问知识排除在控制器之外,现在使用域模型将业务逻辑排除在控制器之外-var result = new MpgCalculator(cars); -假设我需要计算器类,因为它需要执行其他逻辑以计算最佳燃油效率,而不仅仅是从数据库中加载/过滤实体。因此,现在我有了一个供呈现的视图数据集,该数据集使用存储库从数据访问层检索,并且使用特定于域的对象来处理和执行与数据相关的业务相关任务。 我在这里犯错吗?我们仍然需要使用存储库模式吗?或者我可以只对接口进行编码以解耦ORM和进行测试吗?关于这个主题,因为我的具体数据访问类dbcontext在数据层中,所以接口定义是否应该进入域/业务层,这意味着如果数据访问技术发生了变化,我的其他层是否会受到影响? 根据到目前为止的研究,我的结构如下所示: MVC Internet应用程序 ->标准Internet项目-这里的模型是ViewModels 域/业务层 ->特定于业务的类/模型,控制器可以使用这些类/模型来处理数据层中的域实体,然后再传递到相关视图 存储库抽象有必要吗?->我听到很多关于此的辩论,尤其是在使用ORM时 数据层 ->实体类(汽车,货车,摩托车),DbContext-具体数据访问技术层

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.