在ASP.net中嵌入HTML

时间:2013-05-04 17:11:30

标签: asp.net html class response.write

我正在尝试使用MS Visual Studio 2010格式化我在ASP.NET中的列表框中显示的购物车中的项目。程序将每个项目的元素显示为连接字符串,这样可以工作但不如我想要的那么优雅

我在cartItem类中的显示功能是:

Public Function Display()As String 返回Product.ProductName& “;”& Product.ProductID& “,(”+ Quantity.ToString()&“at”& FormatCurrency(Product.UnitPrice)&“each)” 结束功能

我被告知“嵌入HTML来格式化你的字符串。添加一个表,trs和tds以及CSS。”我在W3Schools中查找了“嵌入HTML”并且没有任何看似相关的内容。我的班级教科书里找不到这样的东西。当我尝试插入类似标签的语句时,Visual Studio会将它们转换为和。我尝试将语句放入响应中,如下所示:

    Response.Write("<html>")
    Response.Write("<table>")
    Response.Write("<tr>")
    Response.Write("<td>")
    Response.Write("<Product.ProductID>")
    Response.Write("</td>")
    Response.Write("<td>")
    Response.Write("<Product.ProductName>")
    Response.Write("</td>")
    Response.Write("</tr>")
    Response.Write("</table>")

但是,我在每一行都收到错误,说“未响应响应。由于其保护级别,可能无法访问”。即使它有效,我也不确定Response.Write是否适合格式化列表框中打印的内容。

我可以尝试使用另一个控件(详细信息视图,表单视图)来显示购物车项目,但我只学会了如何将这些项目绑定到数据库,这些项目都在我的购物车中(cartitemlist类的一个对象,这是一个购物车项目数组,而不是在数据库中。

非常感谢任何帮助。我需要学习这个,所以我不只是在寻找复制的解决方案;我想了解如何做到这一点。先感谢您。 w ^

1 个答案:

答案 0 :(得分:1)

您可以创建一个usercontrol并实现RenderContents();

public class ProductGrid :  System.Web.UI.WebControls.WebControl
{
    public List<Product> DataSource {get; set;}

    protected override void RenderContents(HtmlTextWriter output)
    {
        //here you can iterate through datasource and write the output
        output.Write("<html><table>");

        foreach(row in this.DataSource)
        {
            output.Write(String.Format("<td>{0}</td><td>{1}</td></tr>",row.ProductID, row.ProductName));
        }

        output.Write("</table></html>");
    }
}

现在将此usercontrol放在aspx页面中,例如可以在div或td中。请记住,如果要在单独的程序集中创建此用户控件,请参阅aspxpage中的“Register Assembly”

<div>
     <ProductGrid Width="100%" ID="ProductGrid1" runat="server" />
</div>

并在Page_Load

中设置数据源
ProductGrid1.DataSource = ??? ; //from where you get List<Product>