相关疑难解决方法(0)

ASP.NET中的请求或服务器的静态类实例是唯一的吗?

在ASP.NET网站上,是每个Web请求唯一的静态类,还是在需要时实例化它们并在GC决定处理它们时进行GC操作?

我问的原因是因为我之前在C#中编写了一些静态类,并且行为与我预期的不同.我希望静态类对每个请求都是唯一的,但似乎并非如此.

如果它们并非每个请求都是唯一的,那么有没有办法让它们成为现实?

更新:
答案给了我正是我所需要的.我已经在使用单例类,但是它使用的是一个静态实例,因此即使用户不同也在请求之间共享,在这种情况下这是一件坏事.使用HttpContext.Current.Items完美地解决了我的问题.对于任何在将来偶然发现这个问题的人来说,这是我的实现,简化和缩短,以便易于理解模式:

using System.Collections;
using System.Web;

public class GloballyAccessibleClass
{
    private GloballyAccessibleClass() { }

    public static GloballyAccessibleClass Instance
    {
        get
        {
            IDictionary items = HttpContext.Current.Items;
            if(!items.Contains("TheInstance"))
            {
                items["TheInstance"] = new GloballyAccessibleClass();
            }
            return items["TheInstance"] as GloballyAccessibleClass;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net static

179
推荐指数
3
解决办法
7万
查看次数

这是WebMatrix PageData中的错误吗?

我想我可能在WebMatrix的PageData中发现了一个错误,但我不确定.它涉及如何将数据从部分页面传递回调用页面.

在WebMatrix文档(教程,例如" 3 - 创建一致外观 "和示例代码)中,建议使用PageData作为在页面之间传递数据的机制(例如,从内容页面到布局页面,或者到部分页面) .

但是我发现这并不总是以另一种方式工作,将数据从部分页面传递回调用页面.在部分页面中修改或添加PageData中的条目似乎不会返回到调用页面.

从最简单的可能示例开始,在测试页面中我们可能会这样:

@{
    PageData["test"] = "Initial entry";
}

<p>Before calling the partial page, the test value is @PageData["test"]</p>

@RenderPage("_TestPartial.cshtml")

<p>After returning to the calling page, the test value is @PageData["test"]</p>
Run Code Online (Sandbox Code Playgroud)

在_TestPartial.cshtml页面中我们可能会这样:

@{
    PageData["test"] = "Modified entry";
}

<p>In the partial page, the test value has been modified to @PageData["test"]</p>
Run Code Online (Sandbox Code Playgroud)

结果输出如下:

在调用部分页面之前,测试值为Initial entry

在部分页面中,测试值已修改为修改条目

返回调用页面后,测试值为Initial entry

因此,当您返回到调用页面时,部分页面对PageData的修改将丢失.如果我们在部分页面中向PageData添加新条目,则会出现同样的情况.它们在返回调用页面时丢失了.

我不知道这种行为是否是一个错误,或者它是否是有意的,但它让你没有一种干净的方式将数据从部分页面传递回其调用页面.还有另一种(相对干净的)方法吗?或者,如果它是一个bug,是否有解决方法?

webmatrix razor

3
推荐指数
1
解决办法
1492
查看次数

从PartialView设置页面标题

可能重复:
在部分视图中修改MVC 3 ViewBag不会持久保存到_Layout.cshtml

我正在尝试从PartialView设置pageTitle

这是我的代码:

PartialView模板:

@{
    ((WebViewPage)WebPageContext.Current.Page).ViewBag.Title = "Page title";
}
Run Code Online (Sandbox Code Playgroud)

_Layout.cshtml:

<title> @ViewBag.Title</title>
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

razor viewbag asp.net-mvc-3

1
推荐指数
1
解决办法
4323
查看次数

标签 统计

razor ×2

asp.net ×1

asp.net-mvc-3 ×1

c# ×1

static ×1

viewbag ×1

webmatrix ×1