【问题标题】:retrieving data from multi value datatype in umbraco从 umbraco 中的多值数据类型中检索数据
【发布时间】:2019-02-23 13:13:16
【问题描述】:

我正在使用 Umbraco 7.13.1

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

app_pluggin

js文件

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文件

<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>

清单

{
  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"
  ]
}

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

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

即 Model.content.ComponentName.HeadingText Model.content.ComponentName.Tag

目前有

pageHeading = Model.Content.GetPropertyValue<string>("cartName");

这会返回

{“标签”:“H3”,“标题文本”:“我的购物车”}

我想要这个

pageHeading = 我的购物车 pageHeadingTag = h3

【问题讨论】:

    标签: angularjs razor umbraco umbraco7


    【解决方案1】:

    您应该创建自己的 C# 类来代表您的对象,例如

    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/

    或者只是反序列化它:

    var tagClass = JsonConvert.DeserializeObject<YourClass>(Model.Content.GetPropertyValue<string>("cartName"));
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-07-25
        • 1970-01-01
        • 2018-08-15
        • 2021-09-06
        • 1970-01-01
        • 2016-02-09
        • 1970-01-01
        • 2017-12-20
        • 1970-01-01
        相关资源
        最近更新 更多