【问题标题】:Cleaner way to write inline c# in .aspx page在 .aspx 页面中编写内联 c# 的更简洁方法
【发布时间】:2011-01-15 01:45:03
【问题描述】:

由于本文中可能不值得一提的原因,我决定停止使用 ASP.NET 控件,而只对我的 .aspx 页面使用常规 HTML 控件。因此,为了动态生成 HTML,我使用 c# 内联到 .aspx 来完成我需要做的事情。

例如:这个 .aspx sn-p 展示了我如何动态创建一个

<select name="s">
<option value="-9999">Select an entity...</option>
<% foreach (MyEntity e in this.MyEntities)
 {%>
<option <% if (MyEntityInScope.ID == e.ID)
 { %>selected<%} %> value="<%= e.ID %>">
<%= e.Name%></option>
<%} %>
</select>

在功能方面,我更喜欢这种创建 HTML 的方法(与 ASP 控件相比,我感觉更能控制 HTML 的生成方式)。然而,从语法上(和视觉上),我认为它很麻烦(而且丑陋)。

有没有一种“更好”的方式(另一种语法)来动态生成 HTML 而无需使用 ASP.NET 控件?

【问题讨论】:

  • 听起来你想改用“ASP.NET MVC”..
  • 看看新的 .Net MVC 项目类型。听起来它更符合你的思维方式。 asp.net/mvc
  • 我在 MVC 上观看了 Scott Guthrie 的视频 vimeo.com/7215798。虽然我觉得花时间学习/实现 MVC 的动力很小,但我不禁想知道为什么我应该学习一个新的范例/框架,而我真正需要做的只是学习创建 HTML 的语法问题。老实说,我还在犹豫是否要深入 MVC。话虽如此,我确信我已经完成了 ASP.NET 表单控件。

标签: asp.net inline-code


【解决方案1】:

为什么不把你的逻辑放到一个方法中,然后调用这个方法呢?

string GetEntityList()
{
// ...
}

<select name="s">
<option value="-9999">Select an entity...</option>
<%=  GetEntityList() %>
</select>

【讨论】:

    【解决方案2】:

    一种常见的方法是通过 XSLT 实现 XML。也就是说,您的代码组装一个 XML 文档,加载一个合适的 XSLT 转换并发送结果。

    【讨论】:

    • 为什么听起来很糟糕?每当您需要更改表示层时,您就不需要更改代码,只需更改 XSLT(如果您想要干净的 XSLT/HTML,您可以更改 CSS 的视觉样式)。可以使用服务器上的自定义控件通过 XSLT 进行 XML 到 HTML 的转换,例如:clipflair.codeplex.com/SourceControl/latest#Server/Components/…
    【解决方案3】:

    返回 HTML 字符串的实用方法可以帮助解决这个问题,类似于 ASP.NET MVC 中的 HTML 帮助器。

    【讨论】:

      猜你喜欢
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      相关资源
      最近更新 更多