自定义页面类型将多选表单控件属性值存储为管道分隔字符串,例如“foo | bar”。
在页面类型ASCX转换中,我能够使用以下方法成功检索并显示 foo | bar 属性值:
<div><%# Eval("Foobar") %></div>
目标是将此字符串值拆分为管道|
字符并输出每个值,但我无法使用页面类型转换ASCX语法实现此目的。
尝试以下操作时出现错误“错误CS0230:foreach语句中都需要类型和标识符”:
<ul>
<% foreach (thing in Eval<string>("Foobar").Split('|')) { %>
<li><%= thing %></li>
<% } %>
</ul>
<ul class="list-unstyled">
<%
things = Eval<string>("Foobar").Split('|');
foreach (thing in things) {
%>
<li><%= topic %></li>
<% } %>
</ul>
尝试将集类型设置为string
或var
会导致系统范围异常并阻止加载网站:
<ul>
<% foreach (string thing in Eval<string>("Foobar").Split('|')) { %>
<li><%= thing %></li>
<% } %>
</ul>
<ul>
<% foreach (var thing in Eval<string>("Foobar").Split('|')) { %>
<li><%= thing %></li>
<% } %>
</ul>
<ul class="list-unstyled">
<%
var things = Eval<string>("Foobar").Split('|');
foreach (var thing in things) {
%>
<li><%= thing %></li>
<% } %>
</ul>
尝试for循环并定位字符串[]主题会导致错误“CS0103:当前上下文中不存在名称'主题'”:
<ul class="list-unstyled">
<%
things = Eval<string>("Foobar").Split('|');
for(int i = 0; i < things.Length; i++) {
%>
<li><%= things[i] %></li>
<% } %>
</ul>
如何实现检索页面类型/文档的值,拆分管道字符,然后显示每个生成的string[]
数组值?我应该使用不同类型的转换吗?
感谢您提供任何帮助!
答案 0 :(得分:4)
实现这一目标的最简单方法是使用&#34; Text / XML&#34;转换类型而不是ASCX,并使用K#Kentico Macro语法循环分隔字符串。
https://docs.kentico.com/k10/macro-expressions/macro-syntax
然后你应该能够做与你的第一个例子类似的事情。来自文档的Kentico的foreach示例有点简单:
{% z = ""; foreach (x in "hello") {z += x.toupper()}; z %}
(返回&#34; HELLO&#34;)
但您应该能够修改它以满足您的需求。
以下是使用嵌套循环和一些HTML的文档中的另一个示例:
{%
orders = ECommerceContext.CurrentCustomer.AllOrders;
if (orders.Count > 0) {
result = "<ul>";
foreach (order in orders) {
foreach (item in order.OrderItems)
{ result += "<li>" + item.OrderItemSKUName + "</li>" }
};
return result + "</ul>";
}%}
答案 1 :(得分:0)
虽然不建议使用以下方法,但它确实派了很多次。写下您的转换如下
<ul>
<%#GenerateLIs(Eval<string>("Foobar"))%>
</ul>
<script runat="server">
public string GenerateLIs(string foobarValue)
{
string liList = string.Empty;
string[] foobarSplit = "foobar".Split('|');
foreach (string item in foobarSplit)
liList += "<li>" + item + "</li>";
return liList;
}
</script>
上述代码可以帮助您解决问题,但有更有效的方法可以帮助您解决问题。 您还可以查看Kentico 9 form macros and different notification recipient based on dropdown value以供参考。