【问题标题】:Replace in ASP.net在 ASP.net 中替换
【发布时间】:2013-06-07 10:42:43
【问题描述】:

我是 asp.net 的新手,我正在努力使用替换功能,希望有人能提供帮助。当我使用一些测试文本时,它可以正常工作(如下例所示),但是一旦我用数据库中的值(Eval(“PContent”))替换测试文本,我就会收到数据绑定错误。标签单独工作正常。

Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用。

我已经尝试过 al-sorts,但我无法解决这个问题。

这是我的代码:

<asp:Label runat="server" ID="Label4" text='<%# Eval("PContent") %>' /> 
<%
Dim text1 As String = "Some text here [q]testing[/q]"
Dim output As String = text1.Replace("[q]", "<span class='quote'>")
Dim VS As String = output.Replace("[/q]", "</span>")
Response.Write(VS)
%>

感谢您的宝贵时间 - 抱歉,如果这是一个非常无聊的问题!我确实尝试在这里和谷歌上搜索答案,但我找不到任何东西......

**更新....

<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<asp:Label runat="server" ID="Label5" text='<%# Eval("PMonthName")%>' />
<asp:Label runat="server" ID="Label6" text='<%# Eval("PDay")%>' /></small>
</div><!--middlebartext -->

<div class="middlebartexttitle"><a href="/Details.aspx?ID=<%# Eval("BID")%>">
<asp:Label runat="server" ID="Label3" text='<%# Eval("Header")%>' /></a><br />

 <asp:Label runat="server" ID="Label4" text='<%# Eval("PContent")%>' />
 <a href="/Details.aspx?ID=<%# Eval("BID")%>">Permalink</a>
 <div class="ruler"></div>
 </ItemTemplate>
 </asp:ListView> 



 <asp:SqlDataSource 
      ConnectionString="<%$ ConnectionStrings:Conn2 %>"
      ID="SqlDataSource1" runat="server" 
      SelectCommand="SELECT * from tablename where Deleted = 'False' Order By  DateAdded DESC"
      onselected="SqlDataSource1_Selected">
     </asp:SqlDataSource>

我已经删掉了一大段代码,所以它没有那么长:)

【问题讨论】:

  • 什么是PContent?一个变量?财产?它是如何以及在哪里定义的?
  • PContent 是我数据库中的单元格名称。我使用了一个带有附加 sqldatasource 的列表视图,所以我实际上并没有在任何我不认为的地方定义它......
  • Label4 是否在 ListView ItemTemplate(或类似模板)中?
  • 是的,在列表视图模板中。
  • 您可以发布您的 ListView 标记和来自SqlDataSource1 的选择查询吗?

标签: asp.net vb.net text replace


【解决方案1】:

这是另一种更短的替换方式:

C#

<%# ((string)Eval("PContent")).Replace("[/q]", "</span>") %>

VB.net

<%# (Eval("PContent").ToString().Replace("[/q]", "</span>") %>

我不太了解 Vb.net,但我认为上面的代码有效。

希望对你有所帮助。

【讨论】:

  • 嗨!我刚刚尝试过这个,但我得到了一个不同的错误——当我在 VB 中工作时,它是用 C# 编码的吗? :-)
  • 您好!谢谢你 - 它几乎可以工作了......但有一件事,我如何添加多个替换语句?例如,这目前适用于 [/q] 但我如何添加 [q] 以及?我认为在经典 asp 中可以使用多个 "a","b","c","a2","b2","c2" 或类似的东西来完成?
  • 噢!回答了我自己的问题! 问题已回答!感谢大家的帮助!
【解决方案2】:

我没有看到您的问题中定义了PContent,但是

这样做会更简单,

Label4.Text = [value from db] 

您可以在从数据库中获取记录后设置文本

【讨论】:

  • 感谢回复...但不是 一样的吗?
  • 不,不是。 &lt;%# 是一个数据绑定表达式。如果您的班级中有一个名为 PContent 的属性,那么您可以使用它。即便如此,它也只有在你调用Page.DataBind() 之后才会起作用。它用于数据绑定控件。并且值在您调用控件上的DataBind 之后出现
  • 哦,所以这可以简单地写成 Label4.Text = PContent 例如? (PContent 是一个 DB 单元)。然后在后面的代码中设置文字?
【解决方案3】:

尝试改变这个:

<div class="middlebartexttitle"><a href="/Details.aspx?ID=<%# Eval("BID")%>">
<asp:Label runat="server" ID="Label3" text='<%# Eval("Header")%>' /></a><br />

<asp:Label runat="server" ID="Label4" text='<%# Eval("PContent")%>' />
<a href="/Details.aspx?ID=<%# Eval("BID")%>">Permalink</a>

收件人:

<div class="middlebartexttitle"><a href='/Details.aspx?ID=<%# Eval("BID")%>'>
<asp:Label runat="server" ID="Label3" text='<%# Eval("Header")%>' /></a><br />

<asp:Label runat="server" ID="Label4" text='<%# Eval("PContent")%>' />
<a href='/Details.aspx?ID=<%# Eval("BID")%>'>Permalink</a>

由于Eval 需要为它评估的字段加上引号,我猜你定义href 属性的引号将其丢弃。将它们更改为单引号(就像您在其他任何地方一样),看看是否有效。

此外,您可以在http://support.microsoft.com/kb/976112 了解有关内联表达式(以及何时使用它们)的更多信息

【讨论】:

    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多