这个ASP.NET功能在哪里被记录?<%= string format, params object[] args %>

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

显然,可以使用ASP.NET web表单页面和视图中的<%= %>构造(渲染块)来编写格式化输出。

<%= "{0} is {1}", "Foo", 42 %>

这将呈现“Foo是42”。据我所知,ASP.NET解析器转换<%= %>为一个调用HttpResponse.Write(string)。显然,在上面的代码中,没有一对一的翻译,因为参数的数量不匹配(假设,上面的表达式分隔参数)。

现在我已经看到,这个班TextWriter有一个Write(string, object[])方法。

我检查了解析器的输出,确实它调用了TextWriter接受params object[]格式参数的方法:

private void @__Renderform1(System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer) {
    // ...
    @__w.Write( "{0} is {1}", "Foo", 42 );

这种行为有记载吗?

提问于
用户回答回答于

这是一个<%= %> 嵌入式代码块,用于维护与经典ASP的兼容性。

正如你看到<%= "{0} is {1}", "Foo", 42 %>的相当于:

string s = string.Format("{0} is {1}", "Foo", 42);
Response.Write(s);

这种行为记录在这里

将包含对象数组的文本表示形式的格式化字符串与任何挂起的制表符间距一起写入输出流。此方法使用与String.Format方法相同的语义。(重写TextWriter.Write(String,Object [])。)

这里是代码渲染块调用Write方法的地方。

用户回答回答于

据我所知,ASP.NET解析器将<%=%>转换为对HttpResponse.Write(string)的调用。

也许这<%= "{0} is {1}", "Foo", 42 %>是翻译成Response.Output.Write(string format, params object[] arg)Output是类型TextWriter,这将是根据http://www.hanselman.com/blog/ASPNETResponseWriteAndResponseOutputWriteKnowTheDifference.aspx解释

扫码关注云+社区

领取腾讯云代金券