I am trying to make a file field editable in the Experience Editor. But neither
@Html.Glass.Editable(field, f => f.File) nor the usage of an
@Html.BeginEditFrame works. Is there a way with Glass Mapper for doing this?
Like Mark Cassidy said, no you can't do this with Glass.
However you have another option in the Experience Editor (although not specific to Glass), if you want to give users the ability to still edit the field that is of type "File Upload". You can add a custom experience editor button to the rendering that displays the file upload.
The first step is to create the button in the core here:
/sitecore/content/Applications/WebEdit/Custom Experience Buttons. You would insert a new item from template. The template you would want to select is
/sitecore/templates/System/WebEdit/Field Editor Button.
You should give the item a descriptive name. It can be only ever used with that specific rendering, or if you always use the same name for all file upload fields, you could make it very generic to use across renderings. You will be presented with the following fields to complete:
- Header: Just the name of the Button
- Icon: Specify an icon to represent the button
- Fields: This is the most important part. You should specify the item name in a pipe separated list. Example in my system I created a field called "Upload" that is of type "File Upload", so i just specified "Upload" in this text box.
- ToolTip: Just a friendly hover label for your button.
That's it for the configuration. By using that item type, Sitecore out of the box handles all the heavy lifting of displaying the modal etc. So the next step is to assign this new button to your rendering. To do so, navigate back to the "Master" database and find your rendering in
/sitecore/layout/Renderings although this could also apply to sublayouts. Click on the rendering you want to edit and find the field
Experience Editor Buttons under the editor options section.
You should see the field you defined, plus some default buttons that are part of Sitecore OOTB. Select the button you created. You are all set to check out the experience editor. Navigate to a page that will have the rendering you just configured and open up that page in the experience edit. Click on the rendering and now you should see something like this:
The first button you see is the button you customized. You will of course see other buttons you can use to customize options related to your rendering. If you click on the button, then it'll automatically trigger a modal popup and display any fields you specified when you configured the button:
This setup is perfect for scenarios where either there isn't a field renderer for a field you are needing the user to edit, but also in the scenario where you have linked fields where the Sitecore item just stores an id. You can allow the user to use a Content Editor style field instead.
Not with Glass Mapper, not using vanilla tools and APIs.
Looking at the official Sitecore Documentation for this (Edit content directly on the page) we learn that these are the fields are supported for inline editing (which is essentially what
- Simple text fields – this field can only contain simple text, such as single-line and multi-line text, dates, and links.
- Rich Text fields – this field gives you more control over how the text appears on the webpage. You can edit a Rich Text field directly on the page or open the Rich Text Editor to get access to more formatting functionality.
- Word fields – this field allows you to use Microsoft Word to edit the text. Depending on the configuration of your website, you can edit the Word field in Microsoft Word or directly on the page. If your website supports inline editing, all of the features of Microsoft Word are also available in the inline editing pane.
- Image fields – a field that only contains images. In an image field, you can change the image, modify the image appearance, or remove the image directly on the page.
For more information, refer to the linked article.
Also, as mentioned in comments, more information available here: