我有一个使用新的.NET 4 System.Runtime.Caching MemoryCache的MVC 3应用程序的问题.我注意到在看似无法预测的时间之后,它会停止缓存,并且表现得像空的一样.考虑一下我直接从ASP.NET MVC中的测试View获取的代码:
MemoryCache.Default.Set("myname","fred", new CacheItemPolicy() { SlidingExpiration = new TimeSpan(0,5,0) });
Response.Write(MemoryCache.Default["myname"]);
Run Code Online (Sandbox Code Playgroud)
当它工作时,可预测的"fred"被打印出来.但是,当问题开始出现时,尽管如此Set(),值为MemoryCache.Default["myname"]null.我可以通过在线上设置断点Response.Write()并使用立即窗口直接设置和读取缓存来证明这一点- 它不会设置它并保持为空!让它再次运行的唯一方法是使AppDomain回收.
有趣的是,当应用程序正常工作时,我可以通过打破Response.Write()线路并运行来激发问题MemoryCache.Default.Dispose().之后,MemoryCache.Default本身不为null(为什么会这样?),但不保存任何设置.它不会导致任何错误,但不会保存任何内容.
任何人都可以验证并解释吗?我相信我已经发现,当应用程序停止工作时,有些东西是Disposing MemoryCache.Default,但这不是我!
UPDATE
好吧,我现在厌倦了这个问题!CLRProfiler似乎不适用于MVC 3.SciTech的CLR工具很好 - RedGate ANTS也是如此.但他们告诉我的只是MemoryCache对象被某些东西处理掉了!我还证明了(通过时间戳打印)我的页面上应该被缓存的部分视图(由OutputCacheAttribute指定)在几分钟后停止缓存 - 它会在每次调用页面时开始刷新.为了澄清环境,我直接在运行Win 7 Ultimate的开发工作站上的IIS 7.5服务器上运行.上面提到的内存工具表明我在播放对象方面只使用了大约9mb的内存.
无奈之下,我已经改变了我的缓存代码,首先搜索环境HttpContext以挂钩并使用其缓存功能(如果有的话).早期测试显示这是可靠的,但感觉就像一个讨厌的黑客.
我觉得MemoryCache和OutputCache不能保证与MVC 3一起工作......
我有一个Service类,其方法名为GetProducts().这封装了业务逻辑并调用存储库以获取产品列表.
我的MVC视图想要将该产品列表显示为MVC SelectList.这个逻辑的正确位置在哪里.我似乎有3个选择:
模型
Model应该公开一个名为的属性ProductSelectList.当View调用此属性的getter时,Model应该Service.GetProducts()在传递之前调用并将结果转换为SelectList.
合理的论点:Model应该调用业务逻辑和存储库.视图应仅提供预定数据.除了将上下文数据传递给模型外,不应涉及Controller.
视图
视图应包含Service.GetProducts()直接调用的代码,并将结果转换为内联的SelectList.
合理的参数:View应直接调用此数据,因为它专门用于View.没有必要涉及模型或控制器,因为我们无论如何都在调用抽象的服务方法,所以其他任何东西都会增加额外的开销.
调节器
Controller应该调用Service.GetProducts(),将结果转换为SelectList并将其传递给Model,该Model应该包含一个简单的ProductSelectList属性.View将访问此属性以进行渲染.
合理的参数:Controller知道要向Service方法提供哪些参数,因此它应该进行调用.模型应该是一个简单的数据占位符,由Controller填充.View的工作是简单地从Model中呈现数据.
我有一种感觉,正确的答案是模型,但其他两个做出了一些合理的观点.也许我已经拥有了一个与模型分开的服务类,这使得水域变得混乱了?
有人愿意分享他们的意见吗?这只是品味问题吗?
我有以下HTML和CSS:
body { background-color: gray; }
h1 {
color: white;
font-size: 2.5em;
}Run Code Online (Sandbox Code Playgroud)
<h1>WHAT CARRER SHOULD YOU HAVE ?</h1>Run Code Online (Sandbox Code Playgroud)
哪个呈现如下:

我想在它周围添加一个笔划,这意味着围绕这些文本的黑色边框.
我用Google搜索并找到了-webkit-text-stroke,并想出了:
body { background-color: gray; }
h1 {
color: white;
font-size: 2.5em;
-webkit-text-stroke: 2px black;
}Run Code Online (Sandbox Code Playgroud)
<h1>WHAT CARRER SHOULD YOU HAVE ?</h1>Run Code Online (Sandbox Code Playgroud)
但是,效果不是我想要的:

正如你所看到的,似乎行程添加里面的文字,使文字看起来太瘦了我.
如何在文本之外进行笔划?
小提琴:http://jsfiddle.net/jpjbk1z7/
PS:只需要webkit支持
我无法让我的DropDownList将所选项目设置为模型中的值.
模型中的字段只是用户名称标题的字符串(Mr,Miss等..)以下是我的代码.
<td>
@{ var list = new List<SelectListItem>(new[] {
new SelectListItem{ Selected = string.IsNullOrEmpty(Model.Title), Text="",Value=""},
new SelectListItem{ Selected = Model.Title.Equals("Mr"), Text="Mr",Value="Mr"},
new SelectListItem{ Selected = Model.Title.Equals("Mrs"), Text="Mrs",Value="Mrs"},
new SelectListItem{ Selected = Model.Title.Equals("Miss"), Text="Miss",Value="Miss"},
new SelectListItem{Selected = Model.Title.Equals("Ms"), Text="Ms",Value="Ms"}
});
}
@Html.DropDownListFor(m=>m.Title, list)
</td>
Run Code Online (Sandbox Code Playgroud) 我有一个包含非ascii格式的数字的字符串,例如unicode BENGALI DIGIT ONE(U + 09E7): "?"
如何在.NET中将其解析为整数?
注意:我尝试使用int.Parse()"bn-BD"作为IFormatProvider指定bengali文化格式.不行.
请给我一点意见的建筑风格:
我的ORM给了我一个User对象,它对应于我系统的用户.我想开发一堆处理用户的方法 - GetByUsername(),Authenticate(),VerifyLoginPassword()等.但是我觉得其中一些方法并不真正属于User类 - 例如GetByUsername()感觉至少像用户的静态方法一样,但是拥有另一个类不是更"干净",比如"UserManager",它为我们提供了这些用户管理类型的任务吗?用户实例包含Authenticate()方法似乎有点奇怪,例如,如果它是进行身份验证的安全系统?
我担心的是我最终跟随这个模型到User类只不过是一个结构,而我的User Manager和Security Manager类实际上完成了所有方法的工作.让所有这些管理器类操作轻量级对象并不是非常"OO".
任何关于这一哲学问题的现有技术的想法或链接都将不胜感激!
我以前更喜欢在生成Linq2SQL模型时使用SqlMetal到Visual Studio中的OR Designer.
所以,我的问题是:是否有一个等效的SqlMetal用于生成EF4模型,即一步重建我的EF类的命令行工具?
我正在尝试各种WYSIWYG javascript文本区域.如果我尝试<textarea>使用jquery在屏幕上的每个屏幕上放置一个CKEditor ,编辑器都显示正常,但它们不会保存.我试过了:
$(function() {
$('.editors').ckeditor();
});
Run Code Online (Sandbox Code Playgroud)
和
$(function() {
$('.editors').each(function(index, element){
$(element).ckeditor();
});
});
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,每个文本区域都有一个CKEditor,但它不会保存.如果我手动添加所有编辑器
$(function() {
CKEDITOR.replace('contactText');
CKEDITOR.replace('edit_footer_text');
CKEDITOR.replace('termsText');
});
Run Code Online (Sandbox Code Playgroud)
要么
$(function() {
$('#contactText').ckeditor();
$('#edit_footer_text').ckeditor();
$('#termsText').ckeditor();
});
Run Code Online (Sandbox Code Playgroud)
这三个领域都有编辑,他们保存.
我试图在这个项目的标准模板中加入一些代码,这样如果我们想要文本区域的编辑器,他们只需要为它们添加类"编辑器",这就是为什么我在寻找jQuery解决方案.这确实适用于tinymce:
$(function() {
$('.editors').tinymce({
script_url : '/common/tiny_mce/tiny_mce.js',
// General options
mode : "textareas",
theme : "advanced",
})
});
Run Code Online (Sandbox Code Playgroud) 在我看来,当涉及到从 API 等动态源加载分页数据时,MudDataGrid 的文档有点缺乏。
ServerData属性?Page和?PageSizeGridState我正在使用iTextSharp生成一些PDF文件.我有两个有内容的表,我想在两个表之间放一些空格,比如相当于1行文本(使用与空格周围的表相同的字体).
下面是我用来添加两个表的代码.我无法弄清楚的是如何在两个表之间放置一个垂直空间.
Table upperTable = new Table(1);
upperTable.Border = Rectangle.NO_BORDER;
upperTable.DefaultCell.Border = Rectangle.NO_BORDER;
upperTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
upperTable.AddCell(new Phrase("some text", font3));
d.Add(upperTable);
Table lowerTable= new Table(1);
lowerTable.Border = Rectangle.NO_BORDER;
lowerTable.DefaultCell.Border = Rectangle.NO_BORDER;
lowerTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
lowerTable.AddCell(new Phrase("some other text", font3));
d.Add(lowerTable);
Run Code Online (Sandbox Code Playgroud)
有人能告诉我如何在两个表之间添加垂直空间吗?
谢谢!
.net ×2
asp.net-mvc ×2
asp.net ×1
blazor ×1
c# ×1
caching ×1
ckeditor ×1
css ×1
html ×1
itextsharp ×1
jquery ×1
linq-to-sql ×1
memorycache ×1
mudblazor ×1
oop ×1
pagedlist ×1
unicode ×1