Вместо Eval (), для нетривиальных сценариев я обычно приводю Container.DataItem к нужному типу, а затем действую оттуда безопасным для типов способом.
Ошибка "неправильно сформированная" вызвана одинарными кавычками вокруг параметра Trim (). Если вы используете одинарные кавычки вне определения атрибута, вы не можете использовать их внутри него. В тех случаях, как у вас, где определение привязки данных содержит много кода, я часто создаю вспомогательный метод (либо внутри скрипта runat = server для представлений MVC и других дружественных для встроенного кода случаев, либо в коде для традиционных приложения веб-форм), который обрабатывает код, который я хочу запустить. Путем рефакторинга в метод он проясняет HTML и обходит хромые ограничения одинарных / двойных кавычек.
Независимо от того, куда вы положили код, В вашем случае вы хотите:
- приведение Container.DataItem к DataRowView
- извлечь значение столбца SomeList с помощью оператора []
- вызовите String.Split () для этой строки, чтобы превратить вашу CSV-строку в массив строк
- используйте это как источник данных вашего внутреннего ретранслятора
Код должен выглядеть примерно так:
<asp:Repeater ID="myRepeater" runat="server"
DataSource='<%# ((System.Data.DataRowView)Container.DataItem)["SomeList"].ToString().Split(new string[] {","}, StringSplitOptions.RemoveEmptyEntries)%>'>
<ItemTemplate>
<a href='http://somesite/downloadattachment.aspx?itemid=<%# Container.ItemIndex %>'>
<%# Container.DataItem %>
</a>
</ItemTemplate>
</asp:Repeater>