我正在使用网络表单,并且在两个不同的块中具有相同的文本。 HTML:
<div class="div1">
<p>My text</p>
</div>
<div class="div2">
<p>My text</p>
</div>
我必须使用asp.net控件。 我正在使用的代码
<asp:Literal runat="server" ID="lblText"></asp:Literal>
是否有任何方法可以将该控件重新用于第二个文本块,而不是使用另一个ID创建此控件的副本?
我不能在此页面上使用<%=
之类的标签。
答案 0 :(得分:1)
是的,您可以将asp: Literal
和DIV的HTML封装在UserControl
中,并公开Text
属性。
MyText.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyText.ascx.cs" Inherits="MyText" %>
<div>
<p>
<asp:Literal runat="server" ID="lblText" />
</p>
</div>
MyText.ascx.cs:
using System.Web.UI;
public partial class MyText : UserControl
{
public string Text
{
get
{
return lblText.Text;
}
set
{
lblText.Text = value;
}
}
}
并在WebForm中使用它:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register src="MyText.ascx" tagname="MyText" tagprefix="uc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<uc1:MyText ID="uc1MyText1" runat="server" Text="My text"/>
<uc1:MyText ID="uc1MyText2" runat="server" Text="My text 2"/>
<uc1:MyText ID="uc1MyText3" runat="server" Text="My text 3"/>
</form>
</body>
</html>
结果: