Response.Write过时?

时间:2009-05-29 09:17:06

标签: c# asp.net

我最近接受了一次面试的技术测试,我做了一个Response.Write()。我被告知这是“老式的”,现在有更好的方法可以做到这一点。面试官不会详细说明,所以我很想知道他指的是什么。有人有什么想法吗?

11 个答案:

答案 0 :(得分:6)

如果页面上的一切由它发送,则Response.Write很棒。当我必须使用ASPX来提供我即时生成的非HTML文件时,我会使用它。

如果使用非空的ASPX页面,Response.Write根本没有任何意义。

答案 1 :(得分:4)

在aspx - 内联服务器脚本标记中:

<%= SomeProperty.Name %>

在代码中 - 这取决于具体情况,但通常有更好的替代方案,例如HtmlTextWriter,ScriptManager(用于注册脚本),文字控件,占位符或其他内容。

答案 2 :(得分:3)

还有很多其他方法。我避免使用Response.Write,因为它取决于将事物写入输出的确切顺序。我宁愿使用例如Literal控件并为其Text属性赋值。

我通常也会尝试避免&lt;%=(此处返回值)%&gt;内联语句,因为我喜欢保持aspx页面只包含页面结构,并将服务器端代码语句保留在代码隐藏文件中。

答案 3 :(得分:2)

取决于您的申请。请记住&lt;%=“某些字符串”%&gt;在.aspx文件中仍然是Response.Write()

的快捷方式

如果你使用Response.Write()函数渲染所有HTML,那么,也许他是对的。但是如果你将它用于内联代码,那么它实际上还可以。

答案 4 :(得分:2)

除非该方法被标记为过时,否则我不会忽略它。它肯定不是“老式的”。但是可能存在更好的替代方案,因为它们更易于维护。

例如,您可以考虑在HTML中编写一堆<%= %>语句,但这是与HttpResponse.Write同时引入的,所以如果其中一个是“老式的”,它们都是

在其他情况下,您可能还需要考虑使用模板引擎。这一切都取决于。

如果你的面试官不想详细说明,那也谈到面试官。

答案 5 :(得分:2)

ASP.Net页面是一个高度结构化的软件,由一系列控件组成,负责提供自己的输出。在这种制度下,Response.Write似乎过时了,因为它回溯到原始的ASP页面,其中所有内容都是内联呈现的。

现代页面只更新呈现自己输出的控件的属性。 Response.Write通过中断控制输出流来打破层次结构。

答案 6 :(得分:0)

我不认为“老式”是面试官真正想说的正确用语。根据上下文,可能有更好的方法可供使用。如果您使用的是内联脚本标记,例如Jason的示例,则<%=约定可能更适合该任务。但是,如果您执行任何类型的View逻辑<% if (*conditional*) { ... } %>,那么您的替代方案可能会受到限制。

答案 7 :(得分:0)

这完全取决于你使用Response.Write for。

如果要输出一个字符串以显示到页面,那么也许你应该在页面上放置一个Literal,然后设置该文字的Text而不是做一个Response.Write。

答案 8 :(得分:0)

在某些情况下,您需要 Response.Write。

假设您将图像存储在数据库中,并希望通过字节数组将它们流式传输到页面上。如果没有Response.Write,我认为你无法做到。

答案 9 :(得分:0)

我们有一些遗留代码,其中所有HTML输出都是在VB DLL中创建的,因为它当时是使用分布式事务控制创建HTML的最快方式。

然而,ASP.NET有点否定了它的需要,因为它为你编译后面的aspx文件和代码。

对于特定任务,Response.Write仍然可以,但绝大多数编码不再需要这样做。

答案 10 :(得分:0)

只是在黑暗中拍摄,但你建议使用Response.write进行调试吗?类似的东西:

Response.Write("Inside first loop.");

如果是这样,我会说它已经过时,因为Visual Studio / .NET中有新的调试工具。