小编Ven*_*emo的帖子

如何在ASP.NET MVC中创建CheckBoxListFor扩展方法?

我知道ListBoxForASP.NET MVC Html助手扩展方法中有一个扩展方法,但我一直认为复选框列表比列表框更加用户友好.

CheckBoxList在旧的WebForms中有一个非常方便的控制,但显然现在已经不在了.

问题是,为什么ASP.NET MVC中没有办法创建复选框列表?如何编写自己的扩展方法来创建复选框列表并以类似的方式运行ListBoxFor

.net asp.net asp.net-mvc checkboxlist

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

使用ASP.NET网站进行持续部署?

我在C#/ ASP.NET中有一个目前正在开发的网站.当我们正在制作时,我希望在一天中经常发布,因为我们修复了错误并添加了功能(例如:http://toni.org/2010/05/19/in-praise-of -continuous-deployment-the-wordpress-com-story /).

如果您上传新版本的网站甚至更改单个文件,它会启动当前登录的用户并使其从任何表单等开始.是否有秘密能够在不干扰.NET站点用户的情况下进行部署?

.net c# asp.net session-state continuous-deployment

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

MEF:如果我有多个出口但只需要一次导入怎么办?

我想把我的思绪包裹在MEF周围.有一点我不明白.

假设我有一个名为ISomething的接口,它是一个契约,我在包含我的应用程序的文件夹中有多个程序集,我不知道它们中有多少ISomething实现,或者哪一个包含一个.

如果我创建一个我使用MEF的主机应用程序,并希望得到一个ISomething,但只有一个,MEF如何决定它将给我哪个实现?

或者,与常见的IoC容器类似,如何告诉它应该使用哪个实现?

提前感谢您的回答.

.net c# mef

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

静态存储库是使用NHibernate的正确方法吗?

我花了剩下的时间阅读StackOverflow问题,还有一些关于这个主题的博客文章和链接.所有这些都证明是非常有帮助的,但我仍然觉得他们并没有真正回答我的问题.

所以,我正在开发一个简单的Web应用程序.我想创建一个可重用的数据访问层,以后我可以在其他解决方案中重用它.其中99%将是Web应用程序.这似乎是我学习NHibernate及其周围模式的一个很好的借口.

我的目标如下:

  • 我不希望业务逻辑层知道关于数据库内部工作的任何内容,也不希望NHibernate本身.
  • 我希望业务逻辑层对数据访问层的假设数量尽可能少.
  • 我希望数据访问层尽可能简单易用.这将是一个简单的项目,所以我不想让任何事情过于复杂.
  • 我希望数据访问层尽可能不具有侵入性.

考虑到这一切,我决定使用流行的存储库模式.我在这个网站和各种开发博客上阅读了这个主题,我听到了一些关于工作单元模式的内容.

我也环顾四周,检查了各种实现.(包括FubuMVC contrib,SharpArchitecture,以及一些博客上的内容.)我发现大多数这些操作都遵循相同的原则:它们创建了一个"工作单元",在实例化存储库时实例化,它们启动一个事务,做东西,提交,然后重新开始.所以,只有一个ISession每次Repository仅此而已.然后客户端代码需要实例化一个存储库,用它做一些东西,然后处理.

这种使用模式不符合我尽可能简单化的需要,所以我开始考虑其他事情.

我发现NHibernate已经有了使自定义"工作单元"实现变得不必要的东西,那就是CurrentSessionContext类.如果我正确配置会话上下文,并在必要时进行清理,我很高兴.

所以,我想出了这个:

我有一个内部静态类叫NHibernateHelper.首先,它有一个名为的静态属性CurrentSessionFactory,在第一次调用时,实例化会话工厂并将其存储在静态字段中.(ISessionFactory每个人一个AppDomain就足够了.)然后,更重要的是,它有一个CurrentSession静态属性,它检查是否ISession绑定到当前会话上下文,如果没有,则创建一个,并绑定它,然后返回ISession绑定到当前的会话上下文.

因为它主要用于WebSessionContext(所以,ISession每个HttpRequest,虽然对于我配置的单元测试ThreadStaticSessionContext),它应该无缝地工作.在创建并绑定an之后ISession,它会将事件处理程序挂钩到HttpContext.Current.ApplicationInstance.EndRequest事件,该事件处理ISession请求结束后的清理.(当然,只有当它真的在Web环境中运行时才会这样做.)

因此,通过所有这些设置,NHibernateHelper将始终能够返回有效的ISession,因此无需为"工作单元"实例化Repository实例以使其正常运行.相反,Repository是与工作的静态类ISessionNHibernateHelper.CurrentSession性能,并通过通用的方法,公开通过该功能.

所以,基本上,我最终得到了两个非常懒惰的单身人士.

我好奇,你怎么看待这个?这是一种有效的思维方式,还是我完全偏离了这里?

编辑:
我必须指出NHibernateHelper类是内部的,因此对于存储库的使用者来说几乎是不可见的.

另一个想法是,为了将依赖注入引入解决方案,就是创建一个名为的接口IDataProvider,并在第一次调用Repository该类时实例化该接口的一个实例.(但是,实现代码也应该能够关注上下文的概念.)

编辑2:
似乎很多人都喜欢我的想法,但在答案中对它的看法仍然太少.
我可以假设这是使用NHibernate的正确方法吗?:P

.net asp.net nhibernate orm repository-pattern

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

Qt/C++中多重继承的正确方法是什么?

在我的Qt应用程序中,我有一个基类如下.我正在使用QObject,因为我想在所有派生类中使用Signal-Slot机制.

class IRzPlugin : public QObject {

public:
  virtual void registerMenu(QWidget*);
  virtual void execute();
}
Run Code Online (Sandbox Code Playgroud)

然后我有另一个课程如下.我需要从QWidget扩展,因为我需要在所有派生类中实现事件处理方法.(mouseMoveEvent(),keyPressEvent().. etc);

class IRzLayeringPlugin : public IRzPlugin , public QWidget{

}
Run Code Online (Sandbox Code Playgroud)

但编译器给出了这些错误:

C:\svn\osaka3d\tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx: In member function `virtual const QMetaObject* IRzLayeringPlugin::metaObject() const':
C:\svn\osaka3d\tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx:51: error: `QObject' is an ambiguous base of `IRzLayeringPlugin'
C:\svn\osaka3d\tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx:51: error: `QObject' is an ambiguous base of `IRzLayeringPlugin'
make[2]: *** [CMakeFiles/Rinzo.dir/plugin/moc_IRzLayeringPlugin.cxx.obj] Error 1
Run Code Online (Sandbox Code Playgroud)

c++ qt qt4 multiple-databases

12
推荐指数
2
解决办法
8290
查看次数

使用XML而不是HTML创建网页有什么好处?

我不时会看到其内容仅以XML(不是HTML或XHTML)编写的网页.这些页面通常附有一些样式表(XSLT或CSS),使它们看起来像任何其他普通的网页.

我的问题是,这种方法有什么好处(如果有的话),为什么有人会选择以这种方式工作?

编辑:如果这是一件好事,为什么它不普遍?

编辑2:感谢大家的好评.他们真的让我开悟了.我也发现这个问题的内容也是相关的.

html xml xhtml

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

如何static_assert变量模板的参数包中的值?

我正在创建一个可变参数模板.
假设我有这样的事情:

template<typename T, T ... Numbers>
class Sequence final {

    // Unpack parameter pack into a constexpr array
    constexpr static T count = sizeof...(Numbers);        
    constexpr static T numbers[count] = { Numbers... };

    // ...
}
Run Code Online (Sandbox Code Playgroud)

可以将此类的实例实例化为:

Sequence<uint32_t, 1, 2, 3, 42, 25> seq;
Run Code Online (Sandbox Code Playgroud)

我想使用,以确保在编译时static_assertnumbers参数包中只包含具体的数字.为了这个例子,让我们说我只想允许01.

所以我想做一些像:

for (size_t i = 0; i < count; i++) {
    static_assert(numbers[i] == 1 || numbers[i] == 0, "Only ones and zeroes are allowed.");
}
Run Code Online (Sandbox Code Playgroud)

但显然,static_assert …

c++ static-assert variadic-templates c++11

12
推荐指数
3
解决办法
4679
查看次数

如何将ASP.NET MVC应用程序中的模型,视图和控制器分成不同的程序集

目前我正试图进入ASP.NET MVC框架.
对于我的大多数测试应用程序,我使用了一个程序集/项目.这适用于一些较小的应用程序.然后我想知道如何将模型,控制器和视图类放入单独的程序集中?在非常大的Web应用程序中,将所有内容放入单个程序集/项目中并不现实.

所以我的问题是:是否有可能告诉ASP.NET MVC框架在另一个程序集中搜索视图和/或控制器而不会失去路由引擎的内置灵活性?

.net asp.net asp.net-mvc .net-assembly

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

如何在Qt中使用带有QDomNodeList的foreach?

我是Qt的新手,我每天都在学习新东西.
目前,我正在空闲时间为我的诺基亚N900开发一个小应用程序.
一切都很好,我能够在设备上编译和运行Maemo应用程序.

我刚刚foreach在Qt中了解了这个关键字.(我知道它不是在C++中,所以直到我不小心偶然发现了一个提到它的Qt文档时才考虑它.)
所以,我决定将我那令人烦恼且难以理解的循环改为foreach,但我没有用这个:

QDomNodeList list = doc.lastChild().childNodes().at(1).firstChild().childNodes();
for (int x = 0; x < list.count(); x++)
{
    QDomElement node = list.at(x).toElement();
    // Do something with node
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试的方式:

foreach (QDomElement node, doc.lastChild().childNodes().at(1).firstChild().childNodes())
{
    // Do something with node
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,上面的代码甚至没有编译.我从编译器得到了神秘的错误消息.

有人可以向我解释如何把它弄好吗?

如果foreach循环不支持QDomNodeList,有没有办法处理支持的XML文件foreach

编辑:

为了澄清,// Do something with node在这种情况下是以下内容:

EveCharacter chr;
chr.setName(node.attribute(EVE_NAME));
chr.setId(node.attribute(EVE_CHARACTER_ID).toInt());
acc->addCharacter(chr);
Run Code Online (Sandbox Code Playgroud)

其中acc是type EveAccount,它将数据存储在a中QList<EveCharacter>.

大写符号是编译时常量字符串.
(我正在为EVE Online API创建一个客户端.这来自接收帐户字符XML并解释它的方法.)

这就是我创建的方式doc:

QDomDocument …
Run Code Online (Sandbox Code Playgroud)

c++ foreach qt qt4 qt-maemo

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

使用nullptr_t时,为什么会出现"参数设置但未使用"警告?

我有一个自定义类实现operator==nullptr.

这是我的代码愚蠢到一个简单的例子:

#include <cstdint>
#include <iostream>

class C {
private:
    void *v = nullptr;

public:
    explicit C(void *ptr) : v(ptr) { }

    bool operator==(std::nullptr_t n) const {
        return this->v == n;
    }
};

int main()
{
    uint32_t x = 0;
    C c(&x);
    std::cout << (c == nullptr ? "yes" : "no") << std::endl;

    C c2(nullptr);
    std::cout << (c2 == nullptr ? "yes" : "no") << std::endl;


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码按预期工作,但g ++(版本6.2.1)给出了以下警告:

[Timur@Timur-Zenbook misc]$ g++ aaa.cpp -o …
Run Code Online (Sandbox Code Playgroud)

c++ warnings g++ nullptr c++11

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