Объединение двух или более строк во встроенном коде ASP.NET

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

Мой код:

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

Спасибо

BB


person BumbleBee    schedule 05.10.2011    source источник
comment
Какой вывод или ошибку вы видите?   -  person Doozer Blake    schedule 06.10.2011


Ответы (6)


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

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

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

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

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

person Brian MacKay    schedule 05.10.2011

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

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

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

person Gellie Ann    schedule 06.02.2014

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

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

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

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

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

person Quango    schedule 06.10.2011

Вы можете сделать это следующим образом:

Text='<%#"CustomText "+Eval("Name")%>'
person murali    schedule 07.03.2014
comment
Было бы полезнее, если бы вы предоставили немного больше контекста. - person gpgekko; 07.03.2014

Text='<%#String.Concat(Eval("UserId"), Eval("Username")) %>'

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

Объединить текст с помощью Eval

person Win Rinkle    schedule 14.04.2016

 Text='<%# string.Concat(Eval("FirstName"), " ", Eval("LastName"))%>'

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

Объединить текст с помощью Eval

person Win Rinkle    schedule 14.04.2016
comment
Пожалуйста, не публикуйте одинаковые ответы на несколько вопросов. Опубликуйте один хороший ответ, затем проголосуйте/отметьте, чтобы закрыть другие вопросы как дубликаты. Если вопрос не повторяется, адаптируйте свои ответы к вопросу. - person Paul Roub; 14.04.2016