在ASP.NET .aspx中的HTML代码模板
在ASP.NET .aspx中的HTML代码模板
我想要在ASP.NET中实现代码模板化,拥有PHP的强大功能。下面这两个代码文件产生相同的输出,但是PHP的代码更加优雅,并且甚至可以被导入到其他PHP文件中以便重用。
ASP.NET:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ASP_dot_NET_test.WebForm1" %>
delegate void Make_buttons(int count);
<%
Make_buttons Make_buttons = i =>
{
for (int k = 0; k < 2; k++)
{
%>
<%
}
};
%>
<%
Make_buttons(count: 5);
%>
PHP:
我知道Master Pages可以实现页面模板化,但它们不能像上面那样实现代码模板化。
我可以采用哪些最佳方法来实现这个目标?
问题的原因是在ASP.NET .aspx中不知道如何使用HTML代码模板。解决方法是可以转换到Razor模板,使用辅助器语法来实现。
在Razor模板中,可以使用以下辅助器语法来实现相同的功能:
@helper SayHello(string name) {Hello @name} @SayHello("John")
如果想要在多个文件中共享辅助器,可以将共享的cshtml文件放在"App_Code"目录中,然后其他文件可以通过引用进行使用。
以下是一些相关的参考链接:
- [Creating and Using a Helper in an ASP.NET Web Pages Site](http://www.asp.net/web-pages/overview/ui-layouts-and-themes/creating-and-using-a-helper-in-an-aspnet-web-pages-site)
- [Move common razor helpers to another file](https://stackoverflow.com/questions/18085263)
- [How do I define a method in Razor?](https://stackoverflow.com/questions/5159877)
问题出现的原因是ASP.NET中使用的HTML代码模板在.aspx文件中无法正常解析,导致生成的自动生成代码不正确。
解决方法是使用<%= %>
语法来替代HTML代码模板。具体来说,在上述示例中,可以将HTML代码模板替换为<%=42%>
。这样,生成的自动生成代码将正确地将42作为文本输出。
下面是修改后的示例代码:
<form id="form1" runat="server">
<div>
Some text <%=42%> more text.
</div>
</form>
生成的自动生成代码如下:
private void @__Renderform1(
System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer)
{
@__w.Write("\r\n <div>\r\n Some text ");
@__w.Write(42);
@__w.Write(" more text.\r\n\r\n </div>\r\n ");
}
通过使用<%= %>
语法,我们可以确保在生成的自动生成代码中正确地输出HTML代码模板中的文本内容。这样,我们就解决了ASP.NET中HTML代码模板无法解析的问题。