Asp.Net MVC:Server Controls vs Html类来呈现控件?

San*_*ira 3 .net asp.net asp.net-mvc

渲染这样的控件有什么好处:

<% Html.RenderPartial("MyControl") %> or
<%=Html.TextBox("txtName", Model.Name) %>
Run Code Online (Sandbox Code Playgroud)

在Web表单样式:

<uc1:MyControl ID=MyControl runat=server />
Run Code Online (Sandbox Code Playgroud)

我理解性能可能是一个原因,因为不需要创建任何对象,但是有可能从代码库中调用它只是为了做一些基本的渲染逻辑可能非常有用.

如果不鼓励这样做,那么你如何处理这种情况:

  • 您需要有条件地使控件可见,并且您不希望用渲染逻辑填充HTML.

  • 你有,<input type="text" value="<%= Model.Name %>" />但你需要检查Model是否为null,因为否则会引发NullPointerException.

[编辑]当我开始使用ASP MVC时我问过这个问题,现在我看到了像Cristian一样的MVC方式的优点.

The*_*kie 7

这有几个原因."传统的"ASP.NET WebForm控件封装了MVC应用程序的Controller和View方面,这将违反模式.通过使它们成为扩展方法,您可以获得很好的能力,例如能够将它们与您自己的实现交换出来并将它们交换出来进行测试

Phil Haack(ASP.NET MVC项目经理)在接受Herdering Code播客采访时谈到了这一点

第24集:Phil Haack关于ASP.NET MVC Beta版(第1部分)

http://herdingcode.com/?p=75

第24集:Phil Haack关于ASP.NET MVC Beta版(第2部分)

http://herdingcode.com/?p=82