asp.net-mvc-2 - 在 ASP.NET MVC 中显示不可读的字符

标签 asp.net-mvc-2

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

StoreViewModel
公共(public)类 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);

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

Weird Error

enter image description here

最佳答案

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

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

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

关于asp.net-mvc-2 - 在 ASP.NET MVC 中显示不可读的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5876930/

相关文章:

css - JQGrid 表头高度

javascript - 在 MVC Controller 操作中返回结果时执行 javascript 函数

asp.net-mvc-2 - 负载测试网站。需要什么?

asp.net-mvc-2 - 如何在自定义验证属性中为不同场景设置多个错误消息?

c# - asp.net - linq to sql 简单问题

asp.net-mvc - 渐进式加载,ASP.NET MVC

asp.net - 缓存数据.Net 4.0 (Asp.NET)

asp.net-mvc-2 - 未为请求的 URL 配置默认文档,并且服务器上未启用目录浏览

javascript - 如何通过名称获取 AJAX.BeginForm' onsuccess 被调用的表单或 div

c# - 我们如何在单个 onclick 命令上触发两个操作