MediaPickerFields仍然无法实现.
我在Migrations.cs中定义了一个新的部件,并在部件中添加了一个Boolean列和一个MediaPickerField如下:
SchemaBuilder.CreateTable("ImageContentPartRecord", table =>
table.ContentPartRecord()
.Column("DisplayImage", DbType.Boolean));
ContentDefinitionManager.AlterPartDefinition("ImageContentPart", builder =>
builder
.Attachable()
.WithField("ImageField", fld =>
fld.OfType("MediaPickerField")
.WithDisplayName("Image")));
Run Code Online (Sandbox Code Playgroud)
假设我有ImageContentPart和ImageContentPartRecord类,如何在我的驱动程序和我的零件模板(编辑/显示)中从我的MediaPickerField(url,尺寸,替代文本,类等)中检索数据?
ie - Parts.ImageContent.cshtml(我想完成这样的事情):
<div>
<img src="@Model.ImageField.Url" alt="@Model.ImageField.Alt" />
</div>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
这是解决方案:
在我的显示驱动程序方法中,我确保在构建时传递我的ImageContentPart( ) :partContentShape
return ContentShape("Parts_ImageContent", () =>
shapeHelper.Parts_ImageContent(
Content: part));
Run Code Online (Sandbox Code Playgroud)
然后在我的模板视图中,我利用 Orchard 架构的动态特性来使用我的MediaPickerField. 为此,您需要访问.ContentItem零件上的属性,然后依靠动态,链接零件名称 ( .ImageContentPart),然后链接字段名称 ( .ImageContent) 以访问该字段。
@{
// Attempting to access MediaPickerField named 'ImageContent'
var image = Model.Content.ContentItem.ImageContentPart.ImageContent;
// Leaning on Orchard dynamics to access properties of the field
var url = image.Url;
}
<img src="@url" alt="@T(image.AlternateText)" />
Run Code Online (Sandbox Code Playgroud)
以下是 MediaPickerField 属性的详尽列表\\Orchard.Fields\Views\Fields\MediaPicker.cshtml:
@*
Alternate Text: @Model.ContentField.AlternateText
Class: @Model.ContentField.Class
Style: @Model.ContentField.Style
Alignment: @Model.ContentField.Alignment
Width: @Model.ContentField.Width
Height: @Model.ContentField.Height
Url: @Model.ContentField.Url
You can also display an image using this example, and add the attributes you need:
<img src="@Href(Model.ContentField.Url)" />
*@
Run Code Online (Sandbox Code Playgroud)
希望如果您遇到类似的问题,这会对您有所帮助!
| 归档时间: |
|
| 查看次数: |
952 次 |
| 最近记录: |