C# 有没有比<;%=%更好、更省力的内联文本提取方法>;?
假设我在.aspx页面(或视图,对于MVC用户)中工作,我有一段内联代码: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 有没有比这种模型更有效、更省力的方法将文本提取到标记中?似乎有很多如果严格地说
<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));%%>一套就够了。它也将所有的处理过程合并到一个语句中,从而减少了代码的总量(特别是如果您经常执行此操作)。除了唯美主义,我不知道你为什么要避免几个脚本块。。。它不会降低性能。。。