Отображение нечитаемых символов в ASP.NET MVC - PullRequest
1 голос
/ 04 мая 2011

Я пытаюсь построить магазин.

StoreViewModel
открытый класс StoreViewModel

{
    public IEnumerable<GetStoreFrontItems_Result> StoreFrontItems { get; set; }
}

index.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<StoreViewModel>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    ..:: Gods Creation Taxidermy :: Store ::..
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <div class="maintext">
        <h2 class="sectionHeader2">:: Gods Creation Taxidermy : Store Items ::</h2>
        <br />
       At times I end up with items and mounts that the owner never came to pick up, so I put them up for sale to help generate 
       some revenue for Gods Creation Taxidermy. 

       <strong>NOTE:</strong> Now before you freak out and think I'm going to sell your mount remember the items for sale are several years old
       and the owner simply didnt make the final payment or for some reason left it here.

        <% Html.DataList(Model.StoreFrontItems).Columns(7).Item(item =>
        {
            item.Template(storeItems =>
            {%>
                <div style="margin-right:45px; line-height:150%;">
                    <span><%: Html.ActionLink(storeItems.CategoryName, "List", new { @animal = storeItems.CategoryName });%></span>                    
                </div>  
         <%--       <div style="margin-right:45px; line-height:150%;">
                    <span><% = galleryImage.ItemName%></span>
                </div>
                <div style="margin-right:45px; line-height:150%;">
                    <span><% = galleryImage.ItemPrice%></span>
                </div>--%>
                    <%});
        }).Render(); %>

    </div>
</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="MetaTagsContent" runat="server">
</asp:Content>

<asp:Content ID="Content4" ContentPlaceHolderID="LeftColumnContent" runat="server">
</asp:Content>

GetStoreFrontItems_Result генерируется с помощью функции import. Вот код из индекса в StoreController:

[CanonicalUrlAttribute("Store")]
[CompressionFilter(Order = 1)]
[CacheFilter(CacheDuration = 120, Order = 2)]
public virtual ActionResult Index()
{
    GodsCreationTaxidermyEntities context = new GodsCreationTaxidermyEntities();
    var viewModel = new StoreIndexViewModel() { StoreFrontItems = context.GetStoreFrontItems() };
    return View(viewModel);

Вот несколько скриншотов, один из которых показывает ошибку, а другой показывает, что отображается.

Weird Error

enter image description here

1 Ответ

5 голосов
/ 04 мая 2011

Что касается ошибки из того, что вы показали в виде кода, невозможно ответить, почему это происходит (хотя сообщение об ошибке кажется более чем понятным). Что касается мусорных символов, то они вызваны фильтром Compression, который вы используете в своем действии. Вот пост в блоге , который прекрасно объясняет причину и способ ее устранения.

Предлагаемое решение состоит в том, чтобы поместить в ваш Global.asax следующее, чтобы отменить эффект ASP.NET, удаляющий настраиваемые HTTP-заголовки сжатия, которые ваш CompressionFilter мог бы добавить в случае исключения:

protected void Application_PreSendRequestHeaders()
{
    // ensure that if GZip/Deflate Encoding is applied that headers are set
    // also works when error occurs if filters are still active
    HttpResponse response = HttpContext.Current.Response;
    if (response.Filter is GZipStream && response.Headers["Content-encoding"] != "gzip")
        response.AppendHeader("Content-encoding", "gzip");
    else if (response.Filter is DeflateStream && response.Headers["Content-encoding"] != "deflate")
        response.AppendHeader("Content-encoding", "deflate");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...