如何解决如何仅输出选择文本而不是2sxc剃刀模板中的值?
在2sxc App中,在我的内容类型中,我有一个加拿大省的下拉列表,其中有缩写的名称和值。看起来像这样:
不列颠哥伦比亚省:bc 艾伯塔省:ab 爱德华王子岛:裴
等等。
我希望能够在我的C#剃刀模板中同时使用文本标签和选择值。当我使用@ Content.Province时,它仅输出该值,因此,如果我选择不列颠哥伦比亚省,它将输出为“ bc”。如何输出所选内容的标签,以便输出“不列颠哥伦比亚省”?
解决方法
一个小更新:我创建了一个教程示例,展示了如何在 C# 中访问配置的下拉属性。这并不能完全回答这里的问题,但可能对寻找类似内容的人有用:
https://2sxc.org/dnn-tutorials/en/razor/data910/page
,我相信这些标签仅位于编辑ui中,不能被标记拉出。
请在此处阅读:2sxc: Dropdown list Get Label instead of value in razor template
,虽然可能有一种方法可以从Entity或Value处获取Label,但还有另一种方法可用,尽管这需要一些步骤才能实现。
首先,您必须标准化值以匹配ISO和DNN 已经存储的内容。看看任何DNN数据库中的dbo.Lists表。
SELECT * FROM [dbo].[Lists] WHERE ListName = 'Region'
因此,例如,您必须将爱德华王子岛的下拉值设置为“ PE”
然后,您可以使用DNN的ListController来获取加拿大的区域,将此代码放入View中,它将生成DNN中内置的名称/值对:
@using DotNetNuke.Common.Lists
@{
IEnumerable<ListEntryInfo> listEntryInfoCol = (new ListController()).GetListEntryInfoItems("Region","Country.CA");
}
<pre>
Value = Text:
@foreach( var region in listEntryInfoCol ) {
<span>@region.Value = @region.Text</span>
}
</pre>
您可能想改为提取一个Dictionary或数组,然后可以使用该值作为获取所需Text的键。
所以我说的是在代码中从DNN列表中加载CA区域,然后在要为PE输出@dictRegions [“ PE”]时输出“爱德华王子岛”。
,您在上面看到了我的答案吗?您正在复制DNN中已有的内容。我想我从来没有讲到重点...
所以看看这个。我不确定如何减少Linq / Lambda部分的复杂性,但是从技术上讲,它只是一行代码。 ;)
也许您或其他人可以简化它。但是,由于DNN已经内置了所有数据,因此您可以将其输入省份Mappings词典:
@using DotNetNuke.Common.Lists
@using System.Linq
@{
Dictionary<string,string> provinceMappings = (new ListController())
.GetListEntryInfoDictionary("Region","Country.CA")
.Select(x => new { x.Value.Value,x.Value.Text } )
.ToDictionary(x => x.Value,x => x.Text );
<pre>
That's it,done,now you can use it like you want:
provinceMappings["PE"] = @provinceMappings["PE"]
Key: Value
@foreach( var region in provinceMappings ) {
<span>@region.Key: @region.Value</span>
}
Count: @provinceMappings.Count()
Type: @provinceMappings.GetType()
JSON: @DotNetNuke.Common.Utilities.JsonExtensionsWeb.ToJson(provinceMappings)
</pre>
}
在视图中输入,您可以看到provinceMappings从DNN中填充了您需要的东西,而无需构建。如果您不想将其放到视图中,则输出看起来像这样
,我最终使用了这种方法:
@{
var provinceMappings = new Dictionary<string,string>();
provinceMappings.Add("ab","Alberta");
provinceMappings.Add("bc","British Columbia");
provinceMappings.Add("mb","Manitoba");
provinceMappings.Add("nb","New Brunswick");
provinceMappings.Add("nl","Newfoundland & Labrador");
provinceMappings.Add("nwt","Northwest Territories");
provinceMappings.Add("ns","Nova Scotia");
provinceMappings.Add("nu","Nunavut");
provinceMappings.Add("on","Ontario");
provinceMappings.Add("pei","Prince Edward Island");
provinceMappings.Add("qc","Quebec");
provinceMappings.Add("sk","Saskwatchewan");
provinceMappings.Add("yt","Yukon Territories");
}
@provinceMappings[p]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。