How can I make sitecore showing an image (or other

2019-05-26 15:02发布

问题:

I installed clean Sitecore 6.6 and enabled MVC support using this guide. So my environment is Sitecore 6.6, ASP .NET MVC 3 and Razor, Microsoft SQL Server Express 2012, IIS 7.5 and I'm using Microsoft Visual Studio 2012 Express for Web. I have following code:

@Model.PageItem.Fields["Title"];<br />
@Model.PageItem.Fields["Image"].GetValue(true, true);<br />
@Model.PageItem.Fields["Text"];<br />
Sitecore.Data.Items.MediaItem item = Model.PageItem.Fields["Image"].Item;
@Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl(item));<br />

Result is simple:

Sitecore
<image mediaid="{4DFD3ABC-0BC0-41D2-BD38-705946A1368A}" mediapath="/Images/xbox" src="~/media/4DFD3ABC0BC041D2BD38705946A1368A.ashx" />
<p>Welcome to Sitecore</p> 
/sitecore/shell/~/media/110D559FDEA542EA9C1C8A5DF7E70EF9.ashx

When I navigate to the path specified in the last line I get following error:

HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

I tried few things, e.g.:

  1. Media.UseItemPaths in Web.config changed to trye (or false) - nothing works...
  2. Media.RequestExtension in Web.config set to empty (ashx is default)
  3. I have added ashx to Allowed extensions in Web.config (because if I cant have normal extensions, I at least want to have working ashx link)
  4. I have added ashx to IIS 7.5 -> Request Filtering -> File name extensions

Of course after each change (just in case) I restarted server and cleared browser's cache (actually, after few requests I have disabled cache for chrome).

I was looking for solution on sdn.sitecore.net with no luck. Actually I've spent more than 3 hrs so far looking for solution and can't figure out what is going wrong... Any help or suggestions appreciated!

回答1:

The Field method of the Sitecore.Mvc.Helpers.SitecoreHelper class will allow you to output an Image field.

Here's an example View Rendering that outputs your three fields:

@using Sitecore.Mvc.Presentation
@using Sitecore.Mvc
@model RenderingModel

@Html.Sitecore().Field("Title")<br />
@Html.Sitecore().Field("Image")<br />
@Html.Sitecore().Field("Text")<br />

John West has blogged extensively on Sitecore MVC, you might like to look at his About MVC Helpers with the Sitecore ASP.NET CMS post.