2013-06-07 3 views
0

Я новичок в asp.net, и я борюсь с функцией замены, которую я надеюсь, кто-то может помочь. Когда я использую некоторый тестовый текст, он отлично работает (как в примере ниже), но как только я заменяю тестовый текст значением из базы данных (Eval («PContent»)), я получаю ошибку привязки данных. Этикетка работает отлично.Замените в ASP.net

Способы связывания данных, такие как Eval(), XPath() и Bind(), могут использоваться только в контексте управления базой данных.

Я пробовал все виды, но я не могу обойти это.

Вот мой код:

<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) 
%> 

Спасибо за ваше время - жаль, если это очень n00b вещь, чтобы спросить! Я попытался найти ответ здесь, и Google, но я ничего не могу найти ...

** Обновление ....

<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> 

Я вырезать кусок кода из так что не так долго :)

+0

Что такое 'PContent'? Переменная? Недвижимость? Как и где это определено? – pete

+0

PContent - это имя ячейки из моей базы данных. Я использовал listview с прикрепленным sqldatasource, поэтому я на самом деле не определил его нигде, я не думаю ... –

+0

Является ли 'Label4' в ListView' ItemTemplate' (или аналогичном шаблоне)? – pete

ответ

0

Это еще один способ сделать заменить более короткий:

C# 

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

VB.net 

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

Я не знаю много Vb.net, но я думаю, код выше работает.

Я надеюсь, что вам это поможет.

+0

Привет! Я только что попробовал это, но у меня другая ошибка - это то, что закодировано в C#, поскольку я работаю в VB? :-) –

+0

Привет! Спасибо за это - он работает почти ... хотя, как я могу добавить несколько замещающих заметок? Например, в настоящее время это работает для [/ q], но как добавить [q]? Я думаю, что в классическом asp это можно сделать с несколькими «a», «b», «c», «a2», «b2», «c2» или что-то в этом роде? –

+1

Oo! Ответил на мой вопрос! Вопрос ответил! Спасибо всем за помощь! –

0

Я не вижу PContent, определенный в вашем вопросе, но

было бы проще сделать что-то подобное,

Label4.Text = [value from db] 

Вы можете установить текст после того, как вы принес запись из базы данных

+0

Спасибо за ответ ... но не тоже самое? –

+0

Нет, его нет. '<% #' - это выражение привязки данных. Если у вас есть свойство в вашем классе под именем 'PContent', вы можете использовать его. И даже тогда он будет работать только после того, как вы назовете 'PageDataBind()'. Его предназначено для использования в элементах управления данными. и значение приходит после того, как вы назовете «DataBind» на элементе управления – nunespascal

+0

Oooh, так что это можно просто написать как Label4.Text = PContent например? (PContent является ячейкой DB). THET задал текст в коде? –

0

Попробуйте изменить это:

<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> 

To:

<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

+0

круто - спасибо, я тоже дам этот снимок :) –

Смежные вопросы