【问题标题】:Unreadable characters displaying in ASP.NET MVCASP.NET MVC 中显示的不可读字符
【发布时间】:2011-05-03 23:35:25
【问题描述】:

我正在尝试建立一个店面。

StoreViewModel
公共类 StoreViewModel

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

索引.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 是通过函数导入生成的。这是 StoreController 中 Index 的代码:

[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);

这里有一些屏幕截图,一个显示错误,另一个显示显示的内容。

【问题讨论】:

  • 您似乎忘记了屏幕截图,从而导致了错误,因此也忘记了问题。
  • 我没有看到有错误的屏幕截图。可以验证吗?
  • 我忘了添加,他们现在在那里

标签: asp.net-mvc-2


【解决方案1】:

就您显示为代码的错误而言,无法回答为什么会发生(尽管错误消息似乎不仅仅是自我解释)。就垃圾字符而言,它们是由您在操作中使用的Compression 过滤器引起的。这是blog post,它完美地解释了原因以及如何解决它。

建议的解决方案是在您的 Global.asax 中添加以下内容,以取消 ASP.NET 剥离您的 CompressionFilter 可能在出现异常时添加的自定义压缩 HTTP 标头的效果:

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");
}

【讨论】:

  • 我会展示更多代码,但是这个项目非常大,并且不确定要发布哪些内容和不发布哪些内容。也感谢你的博客链接,我会让你知道结果如何。
  • 这正是我所需要的。非常感谢
  • 哇,我不敢相信这个问题/答案在过去 5 年里没有得到比这更多的意见和支持。这对我非常有帮助,因为我知道每当我得到垃圾结果时我都有一个错误,但直到现在才知道如何让它显示错误而不是垃圾。
  • 这对我不起作用,但是,它引导我进行以下操作:stackoverflow.com/a/27123147/3997521。我相信对于其他人来说,这个问题可能在同一个领域。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 2013-11-27
相关资源
最近更新 更多