小编Dan*_* T.的帖子

为什么我的静态类没有在ASP.NET MVC中初始化?

我有一个ASP.NET MVC项目,其中有一个静态类来初始化一些AutoMapper映射:

static class AutoMappingConfiguration
{
    static AutoMappingConfiguration()
    {
        SetupMappings();
    }

    static void SetupMappings()
    {
        AutoMap.CreateMap<Product, ProductDTO>();
        // more mappings
    }
}
Run Code Online (Sandbox Code Playgroud)

在静态构造函数中设置断点会告诉我,当我运行项目时它永远不会被击中.我必须在以下方面明确调用该方法MvcApplication.Application_Start():

AutoMappingConfiguration.SetupMappings();
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这个静态类不是由ASP.NET MVC构造的?这是否与IIS的"动态编译"性质有关?如果是这样,我是否必须显式调用静态方法,或者是否有某种方法来配置项目以初始化静态类?

c# iis static constructor asp.net-mvc-2

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

POCO不应该有基类吗?

我有3种不同类型的数据:图像,视频和音频剪辑.每个都有一个相关的GPS点,所以我有一个基类:

public abstract class Data {
    public Latitude { get; set; }
    public Longitude { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以在地图上绘制所有内容,而不必担心它是什么类型的数据.但是,我一直在读POCO不应该是从objectC#中的基类以外的任何东西派生的.这是真的?

c# poco

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

如何使用HashSet.AddRange()编写通用扩展方法将List转换为HashSet?

HashSet没有AddRange方法,所以我想为它编写一个扩展方法.这就是我所拥有的:

public static void AddRange<T>(this ICollection<T> collection, IEnumerable<T> list)
{
    foreach (var item in list)
    {
        collection.Add(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个基类,Media和派生类Photo.这是我想要的代码:

var photos = new List<Photo>();
var media = new HashSet<Media>();
media.AddRange(photos);
Run Code Online (Sandbox Code Playgroud)

然而,编译器告诉我,它无法转换List<Photo>IEnumerable<Media>,当我尝试使用AddRange().我很确定这是因为我有IEnumerable<T>扩展方法,但是如何编写它以使类型与类型不同AddRange<T>

c# generics extension-methods hashset

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

为什么在终结器中调用Dispose()导致ObjectDisposedException?

我有一个NHibernate存储库,如下所示:

public class NHibRepository : IDisposable
{
    public ISession Session { get; set; }
    public ITransaction Transaction { get; set; }

    // constructor
    public NHibRepository()
    {
        Session = Database.OpenSession();
    }

    public IQueryable<T> GetAll<T>()
    {
        Transaction = Session.BeginTransaction();
        return Session.Query<T>();
    }

    public void Dispose()
    {
        if (Transaction != null && Transaction.IsActive)
        {
            Transaction.Rollback(); // ObjectDisposedException on this line
        }

        Session.Close();
        Session.Dispose();
    }

    ~NHibRepository()
    {
        Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我像这样使用存储库时,运行正常:

using (var repo = new NHibRepository())
{
    Console.WriteLine(repo.GetAll<Product>().Count());
}
Run Code Online (Sandbox Code Playgroud)

但是当我像这样使用它时,它会抛出ObjectDisposedException:

var …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate session dispose transactions

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

如何将Javascript放在Coldfusion Model Glue页面的<head>元素中?

我有一个Model Glue CFM页面index.cfm,其中包含一些我想要执行的JS代码:

<script type="text/javascript">
    $(function() {
        $('#text').height(300);
    });
</script>

<p id="text">This is some text</p>
Run Code Online (Sandbox Code Playgroud)

这将被插入到CFM模板中,如下所示:

<html>
    <head>
        <script type="text/javascript" src="js/jquery.js"></script>
    </head>

    <body>
        <cfoutput>#viewCollection.getView("body")#</cfoutput>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

以及相关部分ModelGlue.xml:

<event-handler name="page.index">
    <views>
        <include name="body" template="pages/index.cfm"/>
        <include name="main" template="templates/main.cfm"/>
    </views>
</event-handler>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会将Javascript部分直接粘贴到正文中.有没有办法将它放在<head>标签中而不必创建单独的CFM文件,类似于ASP.NET MVC 3 Razor @section标签的工作方式?

coldfusion asp.net-mvc jquery model-glue coldfusion-9

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

Coldfusion中的Model-Glue模型与其他MVC框架中的模型相同吗?

如果您按照官方Model-Glue文档提供的快速入门指南,请在此处找到:

http://docs.model-glue.com/wiki/QuickStart/2%3AModellingourApplication#Quickstart2:ModelingourApplication

看起来"模型"是执行应用程序操作的类.在这个例子中,他们创建了一个Translator将一个短语翻译成Pig Latin的类.从这里可以很容易地推断出程序逻辑也应该是"模型",例如数据库操作类和HTML帮助程序.

但是,我最近收到了一个关于我在这里询问有关MVC的问题的答案:

使用MVC,我如何设计视图,以便它不需要知道控制器设置的变量?

在其中一个答案中,提到MVC中的"模型"应该是控制器填充数据的对象,然后将其传递给视图,并且视图将其用作强类型对象来呈现数据.这意味着,对于上面提供的模型胶水例如,应该已经是一个翻译器,一个翻译观点,一PigLatinTranslator类,和Translation看起来像这样的模式:

component Translation
{
    var TranslatedPhrase = "";
}
Run Code Online (Sandbox Code Playgroud)

这个控制器会像这样使用它:

component TranslatorController
{
    public function Translate(string phrase)
    {
        var translator = new PigLatinTranslator();
        var translation = new Translation();
        translation.TranslatedPhrase = translator.Translate(phrase);

        event.setValue("translation", translation);
    }
}
Run Code Online (Sandbox Code Playgroud)

视图将呈现如下:

<p>Your translated phrase was: #event.getValue("translation").TranslatedPhrase#</p>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,PigLatinTranslator它只是一个驻留在某处的类,不能被视为模型,控制器或视图.

我的问题是,ColdFusion Model-Glue的模型与MVC模型不同吗?或者是快速入门指南,他们提供了一个糟糕的MVC示例,以及我在上面列出的正确方法的代码?或者我完全偏离了所有这一切?

model-view-controller coldfusion model-glue coldfusion-9

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

如果li很长,我如何得到一个无序列表来阻止自动换行?

我有一个选项按钮,当单击时,将在按钮下方显示一个下拉列表(类似于上下文菜单).我遇到的问题是,如果其中一个<li>元素<ul>太长,它将包装文本:

http://img202.imageshack.us/img202/6933/optionsdk.png

请注意" 转让所有权 "选项是如何自动换行的.

我知道我可以在<ul>元素上设置一个足够长的固定宽度以防止自动换行,但我希望它是流畅的,因为选项会根据我所在的页面而改变,有些页面只有短项目.如果我设置了固定宽度,那些只有短选项的页面看起来会过长,空格太多.

有没有人知道如何<ul>扩展它的宽度,以便没有<li>文字包装元素?我有一个jsFiddle,你可以搞乱:

http://jsfiddle.net/6FpFP/

css

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

用零填充一个数字,但只有它低于一定长度?

我的数字必须至少为7位数.例如:

0000001
123456789
0012345
Run Code Online (Sandbox Code Playgroud)

都是有效的.只有当它的长度低于7时,我才需要用0填充数字.如何在SQL Server中执行此操作?我能够得到的最好的是如果长度小于7,则填充数字,但是高于该数字,它开始截断数字.

sql sql-server sql-server-2008

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

while(true)和for(;;)之间有什么实际差异?

我个人使用while(true)无限循环,但我已经看到在线使用的示例for(;;).实际上,这两者之间是否有任何差异,还是只是一种风格?

c# loops for-loop while-loop

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

如何返回不在Javascript地图中的元素数组?

我有一个Javascript对象:

var errorMap = {
    100: 'You must enter a name.',
    200: 'You must enter an address.',
    300: 'You must enter a DOB.'
}
Run Code Online (Sandbox Code Playgroud)

在我的代码的另一部分,我收到一组错误代码:

var errorCodes = [100, 200, 500, 600];
Run Code Online (Sandbox Code Playgroud)

我想要做的是将errorCodes数组与errorMap对象的键进行比较,并返回没有相应键的所有错误代码errorMap.在这种情况下,我想得到这个:

[500, 600]
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我可以访问jQuery.

javascript jquery

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