在ASP.NET MVC中我无法做的事情

20 浏览
0 Comments

在ASP.NET MVC中我无法做的事情

使用ASP.NET MVC有哪些不能做的事情?

只有ASP.NET WebForms才能实现的事情,

或者在WebForms中更容易实现的事情?

我们正在考虑在一个新项目中使用ASP.NET MVC。

但我想知道与WebForms相比,是否有一些明显的事情我们无法用ASP.NET MVC实现,或者在ASP.NET MVC中需要花费大量时间的地方。

0
0 Comments

在ASP.NET MVC中不能做的事情

在ASP.NET WebForms中,验证非常容易。可以添加验证器并设置启用客户端验证的属性。可以本地化错误消息,本地化可以在客户端和服务器端同时工作。

而在MVC中,没有现成的客户端验证,并且需要找到一种方法来本地化客户端错误消息。

本地化本身也是不同的。资源默认情况下不存在于每个页面,因为没有页面。但是有一种很好的方法可以在每个视图中拥有资源。

我还没有检查过是否可以按文件夹设置需要SSL。

编辑:

在MVC3中情况有所不同。现在有了很好的验证支持。

在MVC中仍然有一些未实现的功能。对我来说,最大的问题是对甜甜圈缓存和部分缓存的完整实现。在MVC3中在这个领域有一些改进,但还不完整。不过请继续关注:MVC团队似乎意识到他们应该在这方面进行改进。

感谢评论。关于服务器端/客户端验证,我发现了xval(xval.codeplex.com),它似乎提供了解决方案...

在MVC2中,验证得到了很大的改进。

0
0 Comments

ASP.NET MVC 是一个非常强大的框架,但是它也有一些限制。下面我们来看看这些限制以及对应的解决方法。

首先,一个主要的限制是无法直接在表单中使用现有的第三方控件。大多数内置控件都可以很容易地复制,但如果你有一个特殊的第三方控件,你可能需要将其托管在一个常规的非-MVC 的 aspx 页面上。幸运的是,这是被支持的。

同样,"web parts" 也无法直接使用。

此外,ASP.NET 使用不同的 HTML 为不同的客户端(移动设备等)生成页面的特性在 MVC 中使用起来会有些不同。不过,实际上大多数客户端现在都能正常工作,所以这个问题在实际中并不是太大的问题。

一些像通过 resx 文件进行国际化的功能需要额外的工作,而不是使用原始的 MVC 模板,但是你可以在互联网上找到相关的示例。

还有一点需要注意的是,MVC 只授权给 MS/ASP.NET 使用,所以如果你在 mono/Apache 环境中使用它,可能会违反授权条款。

接下来,我们来看看在 MVC 中你可以做的事情,而在原始的 ASP.NET 中可能无法实现或者较为困难的事情有:

1. 使用路由而不是页面

2. 自动解析输入(动作参数)

3. 适当的 HTML 控件

4. 可以使用 jQuery 等工具实现简单的 AJAX

5. 关注点分离

6. 可测试性

7. IoC/DI(依赖注入)

8. 多种模板选项(不仅限于 aspx/ascx)

关于自动解析输入,例如以下代码:

public ActionResult Show(string name, int? page, int? pageSize) {...}

会从路由、查询字符串或者表单中获取 "name"、"page" 和 "pageSize" 的值,这样你就不需要花费大量时间来解析请求的参数了。

关于模板选项,不仅仅局限于 aspx/ascx。你可以参考这里的链接(https://stackoverflow.com/questions/173207),或者自己编写模板引擎。视图并不完全依赖于 ASP.NET 控件。

感谢你的回复,这让我更加确定选择 MVC 是相对安全的。不过,我不太理解你提到的'automated input resolution'、'IoC/DI'和'multiple templating options'的含义。你能给出一些例子吗?

ASP.Net MVC 是在 MS-PL 下的开源项目,这是一个非常自由的许可证。你可以在 mono 环境下合法地运行它。详细信息可以参考这里的链接(http://weblogs.asp.net/scottgu/archive/2009/04/01/asp-net-mvc-1-0.aspx)。

0
0 Comments

ASP.NET MVC中无法使用用户控件(User Controls),这是因为MVC的设计理念是简化和更好地控制所呈现的标记(markup)。虽然MVC中没有用户控件,但可以使用部分视图(partial views)来实现类似的功能。服务器控件(Server Controls)在MVC中是可用的,因为它们与WebForms模型相配合。这是一个设计决策,而不是疏忽。用户控件是.ascx文件,它们已经作为部分视图得到支持。服务器控件可以编写自己的RenderControl方法,并具有设计师支持。虽然目前MVC中没有用户控件,但计划在未来的版本中加入。无法在ASP.NET MVC中使用用户控件是MVC设计理念的一部分,旨在提供简化和更高度控制的开发体验。

0