鉴于内容页面上的代码:
Are you sure you want to add another <asp:Literal runat="server" id="Name1" /> to the basket?
You already have a <asp:Literal runat="server" id="Name2" /> in your basket.
<asp:Literal runat="server" id="Name3" /> has not yet been added to your basket.
然后在代码隐藏中:
Name1.Text = Product.Name;
Name2.Text = Product.Name;
Name3.Text = Product.Name;
我很确定这不是最好的解决方法,是否有ASP.net功能或我不知道的设计模式?
答案 0 :(得分:4)
为什么不使用string.Format
?
String.Format("Are you sure you want to add another {0} to the basket? You already have a {0} in your basket. {0} has not yet been added to your basket.", Product.Name)
答案 1 :(得分:3)
嗯,实际上你不需要使用文字,如果渲染中的这三行应该显示相同的产品名称,那么:
Are you sure you want to add another <%# Product.Name %> to the basket?
You already have a <%# Product.Name %> in your basket.
<%# Product.Name %> has not yet been added to your basket.
在Load
期间,只需在Page
或Control
中调用DataBind()。
或者您可以使用ResX,添加一个名为“BasketText”的字符串资源并放入此字符串:
Are you sure you want to add another {0} to the basket?
You already have a {0} in your basket.
{0} has not yet been added to your basket.
在您的控件或页面中,实现一个名为“BasketText”的内部或公共只读属性,并在getter中执行此操作:
return String.Format(GetLocalResourceObject("BasketText"), ProductName)
然后,您的标记将如下所示(也调用DataBind,如前面的方法):
<%# BasketText %>
更新&amp;注意
请注意其他建议内联评估的用户<%=...%>
。这是一种旧式的方法,它具有强大的对应物。如果您这样做并且代码修改了控件集合,那么您的页面将抛出异常。
出于这个原因,我将始终建议数据绑定表达式,它没有这样的问题,这些就像魅力一样。
答案 2 :(得分:1)
如果您可以访问变量Product.name或公开它,则可以执行以下操作:
Are you sure you want to add another <%=Product.Name%> etc..
而不是文字
答案 3 :(得分:1)
为什么不使用一个Literal控件然后使用
String.format( "Are you sure you want to add another {0} to the basket? You already have a {0} in your basket. {0} has not yet been added to your basket.", Product.Name);
检查出来:
http://msdn.microsoft.com/en-us/library/1ksz8yb7.aspx
干杯
答案 4 :(得分:0)
我没有看到这个问题,除了变量名称可以使用一些更好的名称。但是,您可以动态地向页面添加控件,但这对于这种情况可能有点过分。这是一篇很好的文章。
答案 5 :(得分:0)
只需使用一个带有runat="server"
的文字,并且在当前为Product.Name
分配String.Format
的文字中,{{1}}
答案 6 :(得分:0)
不能说这必然更好,但更短的选择。
<%=string.Format("Are you sure you want to add another {0} to the basket? You already have a {0} in your basket. {0} has not yet been added to your basket.",Product.Name)%>