0

我希望能够借助 PHP 的强大功能在 ASP.NET 中实现代码模板。以下两个代码文件产生相同的输出,但 PHP 的更优雅,甚至可以导入到其他 PHP 文件中,以便重复使用。

ASP.NET:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ASP_dot_NET_test.WebForm1" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server"><title></title></head>
<body>
<script runat="server">
    delegate void Make_buttons(int count);
</script>
<%
Make_buttons Make_buttons = i =>
    {
    for (int k = 0; k < 2; k++)
        {
        %>
        <hr />
        <button><%= "buy " + i + " candies!" %></button>
        <%
        }
    };
%>

<div>
    <%
    Make_buttons(count: 5);
    %>
</div>
</body>
</html>

PHP:

<!DOCTYPE html>
<html>
<head><title></title></head>
<body>
<?php
function Make_buttons ($i)
    {
    for ($k = 0; $k < 2; $k++)
        {
        ?>
        <hr />
        <button><?= "buy " . $i . " candies!"; ?></button>
        <?php
        }
    }
?>

<div>
    <?php
    Make_buttons(5);
    ?>
</div>
</body>
</html>

我知道母版页,但它们完成了页面模板,而不是像上面那样的代码模板。

我可以做到这一点的最佳方法是什么?

4

2 回答 2

0

样本(不是答案):

使用Control.RenderControl使用 Controls 将文字文本写入输出:

protected override void Render(HtmlTextWriter output)
{       
   output.Write("<br>Message from Control : " + Message);       
   output.Write("Showing Custom controls created in reverse" +
                                                    "order");         
}

ASPX 自动生成的代码:

<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    ");
 }
于 2013-11-03T01:43:54.657 回答
0

我不知道如何在.aspx 中做到这一点。如果您愿意切换到 Razor 模板...您可以使用帮助语法,如...

@helper SayHello(string name)
{
    <div>Hello @name</div>
}

@SayHello("John")

您可以通过创建魔术目录“App_Code”并将共享的 cshtml 文件放在那里来跨多个文件共享帮助程序。

http://www.asp.net/web-pages/overview/ui-layouts-and-themes/creating-and-using-a-helper-in-an-aspnet-web-pages-site

将常见的剃须刀助手移动到另一个文件

如何在 Razor 中定义方法?

于 2016-07-02T23:31:18.767 回答