C# 有没有比<;%=%更好、更省力的内联文本提取方法>;?

C# 有没有比<;%=%更好、更省力的内联文本提取方法>;?,c#,asp.net,asp.net-mvc,inline-code,C#,Asp.net,Asp.net Mvc,Inline Code,假设我在.aspx页面(或视图,对于MVC用户)中工作,我有一段内联代码: <p>Some HTML and content</p> <% foreach (var x in foo) { %> <%= x.myProperty %> <% } %> <p>Moar HTMLz</p> 一些HTML和内容 摩尔HTMLz 有没有比这种模型更有效、更省力的方法将文本提取到标记中?似乎有很多如果严格地说

假设我在.aspx页面(或视图,对于MVC用户)中工作,我有一段内联代码:

<p>Some HTML and content</p>

<% foreach (var x in foo) { %>
   <%= x.myProperty %>
<% } %>

<p>Moar HTMLz</p>
一些HTML和内容

摩尔HTMLz


有没有比这种模型更有效、更省力的方法将文本提取到标记中?似乎有很多
如果严格地说目标是减少节数,那么您可以编写一段很长的路,但这几乎不是一个改进:

<% foreach (var x in foo) {
       Response.Write(Html.Encode(x.MyProperty));
   } %>

如果您只想将其移出aspx页面,可以将其移动到控件:

<% Html.RenderPartial("properties", foo); %>


这种技术的一个优点是,您可以为部分内容使用不同的视图引擎(例如,NHaml),同时仍然保持aspx页面(视图)的一般结构。如果严格的目标是减少节数,您可以将其写出来,但这并不是一个改进:

<% foreach (var x in foo) {
       Response.Write(Html.Encode(x.MyProperty));
   } %>

如果您只想将其移出aspx页面,可以将其移动到控件:

<% Html.RenderPartial("properties", foo); %>


此技术的一个优点是,您可以为部分内容使用不同的视图引擎(例如,NHaml),同时仍然保持aspx页面(视图)的常规结构。

为可枚举集合创建扩展方法:

public static void Each<T>(this IEnumerable<T> list, Action<T> fn)
{
          foreach (T item in list)
        fn(item);
}
或者,为了更方便,使用自定义视图页面(对于MVC)或自定义页面类(对于Web表单),该类具有一个已经为您实现此功能的方法:

public void WriteText(string coreText)
{
    Response.Write(Html.Encode(coreText));
}

让它变得更容易。扩展方法确实有帮助。

为可枚举集合创建扩展方法:

public static void Each<T>(this IEnumerable<T> list, Action<T> fn)
{
          foreach (T item in list)
        fn(item);
}
或者,为了更方便,使用自定义视图页面(对于MVC)或自定义页面类(对于Web表单),该类具有一个已经为您实现此功能的方法:

public void WriteText(string coreText)
{
    Response.Write(Html.Encode(coreText));
}

让它变得更容易。扩展方法真的很有帮助。

是的,但即使我把它拉出来放到一个控件中,我仍然必须做同样的事情。问题是,如果我想把一个代码块中的简单文本放到页面上,除了
还有其他方法吗?是的,但即使我把它拉出来放到控件中,我仍然必须做同样的事情。问题是,如果我想从代码块中获取简单文本到页面上,除了
之外,还有其他方法吗?但这是否会影响您仍然需要3组
?您只需要:Response.Write(Html.Encode(x.MyProperty));%%>一套就够了。它也将所有的处理过程合并到一个语句中,从而减少了代码的总量(特别是如果您经常执行此操作)。除了唯美主义,我不知道你为什么要避免几个脚本块。。。它不会降低性能…但这是否会影响您仍然需要3组
?您只需要:Response.Write(Html.Encode(x.MyProperty));%%>一套就够了。它也将所有的处理过程合并到一个语句中,从而减少了代码的总量(特别是如果您经常执行此操作)。除了唯美主义,我不知道你为什么要避免几个脚本块。。。它不会降低性能。。。