从umbraco中的多值数据类型中检索数据
retrieving data from multi value datatype in umbraco
我正在使用 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");
这个returns
{ "TAG": "H3", "HEADINGTEXT": "MY CART" }
我想要这个
pageHeading = 我的购物车
pageHeadingTag = h3
您应该创建自己的 C# class 来代表您的对象,例如
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"));
感谢 eyescream 昨晚解决了它,它创建了一个模型和控制器,然后调用函数将字符串反序列化到模型中,然后返回到 cshtml 文件。你的看起来容易多了,但我想在完成轨道的插件中添加更多变量,所以我认为我的也能长期完成这项工作
我正在使用 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");
这个returns
{ "TAG": "H3", "HEADINGTEXT": "MY CART" }
我想要这个
pageHeading = 我的购物车 pageHeadingTag = h3
您应该创建自己的 C# class 来代表您的对象,例如
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"));
感谢 eyescream 昨晚解决了它,它创建了一个模型和控制器,然后调用函数将字符串反序列化到模型中,然后返回到 cshtml 文件。你的看起来容易多了,但我想在完成轨道的插件中添加更多变量,所以我认为我的也能长期完成这项工作