Объединить две или более строк во встроенном коде ASP.NET - PullRequest
6 голосов
/ 06 октября 2011

Я пытаюсь разместить * рядом с именем на основе условия.

Мой код:

 <asp:Label ID="lblOne" runat="server"   Text= '<%# Eval("name") + ((Eval("StatusId").Equals(0) && Eval("assignfilename") == null) ? " *" : "") %>' > </asp:Label>

Спасибо

BB

Ответы [ 6 ]

4 голосов
/ 06 февраля 2014

Я не очень знаком со встроенными кодами, и ваш код кажется немного сложным. Но мне также нужно объединить Eval («запись») и текст. Поэтому, чтобы ответить на вопрос о том, как объединить, амперсанд работал для меня.

'<%# Eval("name") & " *" %>'

надеюсь, это кому-нибудь поможет.

3 голосов
/ 07 марта 2014

Вы можете сделать это так:

Text='<%#"CustomText "+Eval("Name")%>'
3 голосов
/ 06 октября 2011

Для простых одноразовых сценариев функция code-behind работает нормально.

Вы также можете рассмотреть возможность кодирования их как свойства в базовом объекте.

Например, еслисгенерированный текст будет использоваться более чем в одном экземпляре, вам нужно будет кодировать функцию с Evals несколько раз в разных формах или элементах управления.

Я бы создал свойство для объекта данных, например NameWithStatusStar,тогда ваш ярлык может быть напрямую связан со свойством с помощью кода внутри Eval ("NameWithStatusStar")

Это более наглядно и многократно, чем ряд выражений, плюс его легче изменить (например, добавить другое поле, изменитьформула и т. д.)

3 голосов
/ 06 октября 2011

Если вы выходите за пределы того, что вы можете легко обработать встроенным кодом, вы всегда можете написать вместо этого функцию. Тогда вы можете сделать что-то вроде:

 <asp:Label ID="lblOne" runat="server"   Text= '<%# EmitSomeText(Eval("name"), Eval("StatusId"), Eval("assignfilename")) %>' />

Это позволяет разбить сложное выражение на сколько угодно строк, что может быть немного менее неловко. Вы можете использовать функцию в вашем CodeBehind или любом другом классе.

Если вы привязываетесь к классу, к которому у вас есть доступ, вы можете добавить свойство только для чтения. Затем вы можете сделать что-то вроде Eval («MyNewProperty»).

Я использую это для выставления форматирования, которое мне нужно повторно использовать. Например, Customer.CustomerFullName может возвращать фамилию, разделенную первым именем через запятую (разумно обрабатывая ситуации, когда один или другой, или оба отсутствуют), а также необязательный заголовок, поскольку, возможно, мои клиенты - это медицинские работники, а у некоторых из них есть доктора и доктора медицины.

1 голос
/ 14 апреля 2016
Text='<%#String.Concat(Eval("UserId"), Eval("Username")) %>'

Это сработало для меня в моем проекте.Нашел здесь:

Объединить текст с Eval

0 голосов
/ 14 апреля 2016
 Text='<%# string.Concat(Eval("FirstName"), " ", Eval("LastName"))%>'

Это сработало для меня в моем проекте.Нашел здесь:

Объединить текст с Eval

...