我在Sitecore 7.5中将MVC视图渲染定义为:
var auth_id = "xxxxxxxxxxxxxxxx";
var auth_token = "xxxxxxxxxxxxxxxx";
var jSON_Object = {
'auth_id': auth_id,
'auth_token': auth_token
};
var calluuid = null;
//Anruf aufnehmen
function RecordTheCall() {
var result = null;
var post = $.ajax({
url: "https://api.plivo.com/v1/Account/"+auth_id+"/Call/?status=live",
type: "GET",
dataType: "jsonp",
contentType: "application/json",
jsonCallback: "parseResponse",
data: JSON.stringify(jSON_Object),
success: function(res) {
console.log("1");
console.log(res);
//get uuid from active call
calluuid = res.call_uuid;
RecordIt();
},
error: function(err){
console.log("E1");
console.log(err);
}
});
}
如您所见,此视图渲染的数据源字段设置为媒体库中图像项的GUID。基本上,我试图在内容项布局的特定静态点中从媒体库渲染图像。
我在布局文件中静态地将此视图渲染为:
Item Name: ViewRenderingA
Item Template: View Rendering
Path: /path/to/ViewRenderingA.cshtml
Data Source: {3AD25922-FE0E-45B3-9F2F-7EF61F678E45} // Item Id of the image in the media library
然后在Razor View实现ViewRenderingA.cshtml文件中,我这样做:
@Html.Sitecore().Rendering("/path/to/ViewRenderingA")
我希望@using Sitecore.Mvc
@using Sitecore.Mvc.Presentation
@model RenderingModel
<p>Page Item Name: @Model.PageItem.Name</p> @* <- This correctly shows the content item name. *@
<p>Rendering Name: @Model.Rendering.Item.Name</p> @* <- Why does this also show the content item name instead of the item name of the image in the media library that's linked to the View rendering via data source? *@
将使用View Rendering的“数据源”字段指向的媒体库项初始化,但它会使用Model.Rendering.Item
进行初始化。看起来它完全忽略了数据源字段。我做错了什么?
答案 0 :(得分:-1)
如果您已提供数据源,则可以使用 Sitecore.Context.Item
访问该项目Item datasource = Sitecore.Context.Item;
如果您的数据源不会改变,那么一个解决方法是使用其Item ID访问它:
dataSource = Sitecore.Context.Database.GetItem(ItemId);
在您的情况下,项目ID将是您的媒体库内容的ID 我希望这会有所帮助。