在ASP.NET .aspx中的HTML代码模板

9 浏览
0 Comments

在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" %>

<%

Make_buttons Make_buttons = i =>

{

for (int k = 0; k < 2; k++)

{

%>


<%

}

};

%>

<%

Make_buttons(count: 5);

%>

PHP:






        

我知道Master Pages可以实现页面模板化,但它们不能像上面那样实现代码模板化。

我可以采用哪些最佳方法来实现这个目标?

0
0 Comments

问题的原因是在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)

0
0 Comments

问题出现的原因是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代码模板无法解析的问题。

0