小编Dar*_*rov的帖子

如何使用ASP.NET MVC实现自定义缓存提供程序

我正在将MonoRail应用程序迁移到ASP.NET MVC 1.0.在我的原始应用程序中,我编写了一个自定义缓存提供程序(使用memcached分布式缓存提供程序)在MonoRail中,这个任务非常简单,因为框架使用了接口,并且ICacheProvider看起来像这样:

public interface ICacheProvider : IProvider, IMRServiceEnabled
{
    void Delete(string key);
    object Get(string key);
    bool HasKey(string key);
    void Store(string key, object data);
}
Run Code Online (Sandbox Code Playgroud)

每个控制器操作都提供此接口的实例.因此,我所要做的就是实现一个使用memcached的自定义缓存提供程序,并告诉MonoRail使用我的缓存提供程序而不是默认缓存提供程序.模拟和单元测试我的控制器也很容易.

在ASP.NET MVC 1.0中,System.Web.Abstractions程序集(名称看起来很有希望)定义了HttpContextBase,如下所示:

public abstract class HttpContextBase : IServiceProvider
{
    ... 
    public virtual System.Web.Caching.Cache Cache { get; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我不明白这里使用的Cache属性是如何缓存提供者的抽象.它是传统的密封Cache类.似乎我不是唯一一个努力模仿框架中的类的人.

我是ASP.NET MVC框架的新手,我必须在这里遗漏一些东西.我可以编写一个CustomBaseController,它使用我定义的ICacheProvider接口,我的所有控制器都派生自这个基类,但如果有一个更优雅的(ASP.NET MVCish)解决方案,我很乐意实现它.我注意到HttpContextBase实现了IServiceProvider.哪来的GetService的方法去寻找服务?这可以轻易嘲笑吗?

provider asp.net-mvc caching

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

Java退格逃脱

我刚刚测试了退格转义,如下所示:

System.out.println("Hello\b");
Run Code Online (Sandbox Code Playgroud)

我希望得到输出:地狱
但它是:"你好"的方块

有谁知道java如何处理这个?

java escaping

15
推荐指数
2
解决办法
3万
查看次数

连接表中的EF Code First附加列用于订购目的

我有两个实体,我有一个关系,我创建了一个连接表

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Image> Images { get; set; }
}


public class Image
{
    public int Id { get; set; }
    public string Filename { get; set; }

    public virtual ICollection<Student> Students { get; set; }
}


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

        modelBuilder.Entity<Student>()
            .HasMany(i => i.Images)
            .WithMany(s => s.Students)
            .Map(m => m.ToTable("StudentImages"));
}
Run Code Online (Sandbox Code Playgroud)

我想添加一个额外的列,以便按时间顺序排列StudentImages.

我应该在哪里添加插入相关代码?

entity-framework-4.1

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

ASP.NET MVC DropDown编辑器模板

我正在寻找使用MVC创建下拉列表编辑器模板的最佳方法.似乎有各种各样的方法,但我找不到任何最好的方法,每个人似乎都有不同的方法.我也在使用带有Razor的MVC3,所以首选一种适用于此的方法.

asp.net-mvc razor asp.net-mvc-3

14
推荐指数
1
解决办法
2万
查看次数

如何在C#中的Html.ActionLink上使用CSS

我试过这段代码

<%: Html.ActionLink("Home", "Index", "Home", new { @class = "NavLink" })%>

它链接到css,以便我可以设置链接的样式,但它会更改链接,使其具有不同于我的控制器的不同URL,就像它没有new { @class = "NavLink" }.有没有办法让我设置这些链接的样式而不破坏我的URL,以便他们转到正确的页面?

谢谢!

css c# asp.net-mvc html.actionlink

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

根据ASP.NET MVC 3中的控制器和操作名称授予当前用户权限

我需要在ASP.NET MVC 3中创建自定义授权.在应用程序内部,授权在5个表中定义:用户,组,用户组,权限,grouprights.用户可以属于多个组,每个权限也可以分配给多个组.为每个控制器操作分配一个RightID.

内置授权无法容纳此设置,因此我尝试创建自定义的AuthorizeAttribute.覆盖AuthorizeCore时,我意识到我无法访问控制器名称和操作名称.

我可以以某种方式要求路由器解析AuthorizeCore中的Request.RawUrl以获取控制器和操作名称吗?或者还有另一种方法可以做我想要的吗?

asp.net-mvc authorization asp.net-mvc-3

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

使用SQL Server进行NHibernate分页

当使用SetFirstResult(start)SetMaxResults(count)实现分页的方法时,我注意到生成的查询只执行a select top count * from some_table并且它不考虑start参数或至少不考虑数据库级别.看来如果我指示NHibernate执行以下查询:

var users = session.CreateCriteria<User>()
                   .SetFirstResult(100)
                   .SetMaxResults(5)
                   .List<User>();
Run Code Online (Sandbox Code Playgroud)

105条记录将在数据库服务器和应用程序之间传输,这将记录前100条记录.对于包含许多行的表,这可能是个问题.

我已经验证了使用SQLite数据库NHibernate利用OFFSETLIMIT关键字来过滤数据库级别的结果.我知道在SQL Server 2000中没有等效的OFFSET关键字和Oracle ROWNUM,但有没有解决方法?SQL Server 2005/2008怎么样?

nhibernate paging sql-server-2000

13
推荐指数
2
解决办法
5097
查看次数

我如何通过php中的cURL发布JSON对象

如何通过php中的cURL将JSON对象发布到Web服务?

我有一个阵列

$data = array('username'=>'abc','password'=>'pass');
Run Code Online (Sandbox Code Playgroud)

我要调用的web服务接受JSON对象,如果我用json_encode将$ data转换为JSON,它对我不起作用.

$data = json_encode($data);

curl_setopt($ch, CURLOPT_POST      ,1);
curl_setopt($ch, CURLOPT_POSTFIELDS    ,$data);
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?或者我还需要设置更多参数?

提前感谢您的帮助.

Tanmay

php json curl

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

需要将文本添加到矩形

我正在创建动态矩形并添加到StackPanel.我需要为每个矩形添加文本.我怎样才能做到这一点?

c# wpf

13
推荐指数
2
解决办法
3万
查看次数

如何使用jQuery的自定义javascript对象的延迟对象?

我有一个标准的javascript对象,其原型扩展了一个.start()方法success,failure分别采用2个回调作为参数:和.此方法执行一些异步处理(它不是 AJAX),并根据此处理的结果调用成功或失败回调.

这是如何模式化的:

function MyObject() {
}

MyObject.prototype.start = function(successCallback, errorCallback) {
    (function(s, e) {
        window.setTimeout(function() {
            if (Math.random() < 0.8) {
                s();    
            } else {
                e();    
            }
        }, 2000);    
    })(successCallback, errorCallback);
}
Run Code Online (Sandbox Code Playgroud)

在方法内部执行的确切处理并不重要,只是它是异步和非阻塞的.我无法控制start方法完成处理的时间点.我也无法控制这种方法的原型和实现.

我控制的是successfailure回调.我应该提供它们.

现在我有一个这些对象的数组:

var arr = [ new MyObject(), new MyObject(), new MyObject() ];
Run Code Online (Sandbox Code Playgroud)

此数组中元素的顺序很重要.我需要.start()连续地在数组的每个元素上触发方法,但只在前一个元素完成后触发(即调用成功回调).如果发生错误(调用失败回调),我想停止执行,不再对数组的其余元素调用.start方法.

我可以通过使用递归函数来天真地实现它:

function doProcessing(array, index) {
    array[index++].start(function() {
        console.log('finished processing the ' + index + ' element');
        if (index < …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-deferred

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