首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从umbraco中的多值数据类型检索数据

从umbraco中的多值数据类型检索数据
EN

Stack Overflow用户
提问于 2019-02-23 21:13:17
回答 2查看 315关注 0票数 0

我正在使用Umbraco 7.13.1

我已经创建了一个自定义数据类型,并且运行良好。但现在我需要将数据呈现到页面的模板中。

The app_pluggin

js文件

代码语言:javascript
运行
复制
angular.module('umbraco').controller('IBD_HeaderController', function ($scope) {

    $scope.model.value.Tag = $scope.model.value.Tag || "default value";
    $scope.model.value.HeadingText = $scope.model.value.HeadingText || "default value";

    console.log($scope.model);

    $scope.SetTag = function () {
        $scope.model.value.Tag = $scope.value.Tag
    };
});

html文件

代码语言:javascript
运行
复制
<div class="IBD_CMS" ng-controller="IBD_HeaderController">
    <div>
        <input class="headingTextBox" type="text" ng-model="model.value.HeadingText" ng-change="SetHeading()">
    </div>
    <div class="HeadingTag">
        <label class="TagOption">
            <input type="radio" name="HeadingTag" value="h1" ng-model="model.value.Tag" ng-click="SetTag()">
            <span>H1</span>
        </label>
        <label class="TagOption">
            <input type="radio" name="HeadingTag" value="h2" ng-model="model.value.Tag" ng-click="SetTag()">
            <span>H2</span>
        </label>
        <label class="TagOption">
            <input type="radio" name="HeadingTag" value="h3" ng-model="model.value.Tag" ng-click="SetTag()">
            <span>H3</span>
        </label>
        <label class="TagOption">
            <input type="radio" name="HeadingTag" value="h4" ng-model="model.value.Tag" ng-click="SetTag()">
            <span>H4</span>
        </label>
        <label class="TagOption">
            <input type="radio" name="HeadingTag" value="h5" ng-model="model.value.Tag" ng-click="SetTag()">
            <span>H5</span>
        </label>
        <label class="TagOption">
            <input type="radio" name="HeadingTag" value="h6" ng-model="model.value.Tag" ng-click="SetTag()">
            <span>H6</span>
        </label>
    </div>
</div>

清单

代码语言:javascript
运行
复制
{
  propertyEditors:[
    {
      alias: "IBD.Heading",
      name: "Intelligence By Design Heading",
      editor: {
        view: "~/App_Plugins/IBD.Heading/IBD.Heading.View.html",
        valueType: "JSON"
      }
    }
  ],
  javascript: [
    "~/App_Plugins/IBD.Heading/IBD.Heading.js"
  ],
  css: [
    "~/App_Plugins/IBD.Heading/style.css"
  ]
}

我可以在内容编辑器中设置信息,并将其全部存储。

我的问题是如何将其作为两个单独的值返回到cshtml文件中

ie Model.content.ComponentName.HeadingText Model.content.ComponentName.Tag

我目前有

代码语言:javascript
运行
复制
pageHeading = Model.Content.GetPropertyValue<string>("cartName");

这将返回

{ "TAG":"H3","HEADINGTEXT":“我的购物车”}

我想要这个

pageHeading =我的购物车pageHeadingTag = h3

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-26 12:39:54

感谢eyescream昨晚解决了这个问题,创建了一个模型和控制器,然后调用函数将字符串反序列化为模型,然后返回到cshtml文件。你的看起来容易多了,但我想添加更多的变量到插件完成的轨道,所以我认为我的将长期工作

票数 0
EN

Stack Overflow用户

发布于 2019-02-25 22:55:12

您应该创建自己的C#类来表示对象,如下所示

代码语言:javascript
运行
复制
public class TagClass {
    public string TAG{get;set;}
    public string HEADINGTEXT{get;set;}
}

然后,您可以实现自己的属性值转换器https://our.umbraco.com/documentation/extending/property-editors/value-converters https://skrift.io/articles/archive/custom-property-value-converters/

或者只是反序列化它:

代码语言:javascript
运行
复制
var tagClass = JsonConvert.DeserializeObject<YourClass>(Model.Content.GetPropertyValue<string>("cartName"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54842004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档