小编mke*_*bbs的帖子

是否可以使用Razor创建通用的@helper方法?

我正在尝试在Razor中编写一个如下所示的帮助器:

@helper DoSomething<T, U>(Expression<Func<T, U>> expr) where T : class
Run Code Online (Sandbox Code Playgroud)

不幸的是,解析器认为这<T是HTML元素的开头,我最终会出现语法错误.是否可以使用Razor创建一个通用方法的帮助器?如果是这样,语法是什么?

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

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

使用.NET的发布/订阅模型可以使用哪些技术?

我目前正在开发一个应用程序,其中应用程序的一个组件需要根据特定事件与多个其他系统组件进行交互.这些事件基于许多不同的触发器发生...某些事件是由用户的操作引起的,其中需要通知其他用户,某些事件是基于时间的,而其他事件是基于对象状态的更改.

基于我到目前为止所看到的,听起来最简单的解耦应用程序组件的方法是设置一个发布/订阅模型,其中组件中的对象发布其他感兴趣的应用程序组件可以订阅的事件.

我见过nServiceBus,由于"供应商锁定"的原因,我不能在Azure中使用.NET服务.还有其他技术吗?我应该考虑采用不同的方法吗?

编辑 - 要清楚,这是一个基于Web的大批量应用程序.该应用程序是ASP.NET MVC,MVC应用程序正在与其数据的多个WCF服务进行通信.

.net events publish-subscribe

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

团队构建:找不到生成的私有访问者

我们一直在使用TeamBuild并测试我们的持续集成构建大约4个月,这个问题刚刚在我们的一个测试程序集中弹出,只在构建服务器上的一个测试程序集上运行测试时.

{NameSpace} .Order_Accessor,Version = 0.0.0.0,Culture = neutral,PublicKeyToken ='{xxx}'或其依赖项之一.该系统找不到指定的文件.

这不是由其他地方提到的Publicize.exe问题引起的. 单元测试在本地运行正常,并且生成的组件确实已创建.

令人困惑的部分是我们在许多项目中使用生成的私有访问器程序集,包括具有上述问题的项目,没有任何问题.进一步调查此问题,生成的程序集永远不会被复制到TestResults // Out目录,这似乎是问题所在.我通过使用TestRunConfig部署设置从SolutionRoot添加程序集来确定这是问题,这导致程序集清单与错误不匹配.

我想知道是否有人有正确复制这些程序集的问题.如果有帮助,我们在Windows Server 2008上运行TeamSystem 2008.

以下是有问题的文件的测试运行部署错误以及Run有以下问题:

TESTTOOLSTASK:警告:测试运行部署问题:无法获取测试'EmailServiceTest.EnqueueTest'指定的部署项'E-mail Templates\OrderConfirmation.txt'(输出目录'电子邮件模板')的文件:System.IO .DirectoryNotFoundException:找不到路径'Continuous Integration Build\Binaries\Continuous Integration Test\E-mail Templates\OrderConfirmation.txt'的一部分.

TESTTOOLSTASK:警告:测试运行部署问题:无法获取测试'Email.Tests.EmailServiceTest.EnqueueTest'指定的部署项'E-mail Templates\OrderConfirmation.htm'(输出目录'电子邮件模板')的文件:System.IO.DirectoryNotFoundException:找不到路径的一部分'持续集成构建\二进制\持续集成测试\电子邮件模板\ OrderConfirmation.htm'

TESTTOOLSTASK:警告:测试运行部署问题:测试容器'\ continuous integration build\binaries\continuous integration test\services.order.supplierintegration.tests.dll'直接或间接引用的程序集或模块'Services.Order_Accessor'不是找到.

tfs unit-testing mstest team-build

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

ASP.NET MVC:Uri 到可用的路由数据

我的问题很简单。我有一个 Uri,我想弄清楚它映射到哪条路由,以便我可以对路由的各个部分进行一些检查:控制器、动作等。

如何从 Uri 转到 RouteData 或 Route?

asp.net-mvc routing asp.net-mvc-routing

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

如何进行单元测试以在 ASP.NET MVC 中使用路由?

我正在针对我的 ASP.NET MVC 应用程序编写单元测试,特别是我正在测试我编写的 HtmlHelper 扩展方法。扩展方法中有一行:

var innerHtml = htmlHelper.ActionLink(text, action, controller, routeValues, null);
Run Code Online (Sandbox Code Playgroud)

当我在单元测试中运行此命令时,无论传入的操作或控制器如何,生成的 URL 的 href 都是空白。

这是我的单元测试:

var page = CreateProductDataPage(); //returns ProductDataPage object
var htmlHelper = Http.CreateHtmlHelperWithMocks<ProductDataPage>(new ViewDataDictionary<ProductDataPage>(page), false);
var result = htmlHelper.ProductListingBreadcrumb(true, null, null);
Run Code Online (Sandbox Code Playgroud)

这是 CreateHtmlHelperWithMocks 方法:

public static HtmlHelper<T> CreateHtmlHelperWithMocks<T>(ViewDataDictionary<T> viewData, bool isLoggedIn) where T : class
{
    var mockViewDataContainer = new Mock<IViewDataContainer>();
    mockViewDataContainer.SetupGet(v => v.ViewData).Returns(viewData);

    return new HtmlHelper<T>(GetViewContextMock(viewData, isLoggedIn).Object, mockViewDataContainer.Object);
}
Run Code Online (Sandbox Code Playgroud)

最后,这是 GetViewContextMock 方法:

public static Mock<ViewContext> GetViewContextMock(ViewDataDictionary viewData, bool isLoggedIn)
{
    var …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc unit-testing moq

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

.NET单元测试 - 如何测试applicationSettings

我有一个类库,它使用应用程序设置来确定特定方法的行为.

我意识到可以说这是一个坏事,但我们知道网站的行为将在发布一周后发生变化(没有真正的确定时间),并且最简单的方法是更改​​设置在配置文件中更改站点的行为.

无论如何,关于我的问题......我希望能够根据applicationSetting的true/false值测试一个行为发生变化的方法.如何创建单元测试来测试单元测试的app.config中未定义的值?该设置是应用程序设置,因此它在Settings.Default实例中是只读的.

.net unit-testing application-settings

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

jQuery UI对话框中的iFrame会导致父级的水平滚动条

我正在使用jQuery UI对话框在新的iFrame中显示内容.一切都很好,除了对话框的父窗口在显示对话框时获得水平滚动条(IE8).我已经将问题追溯到iFrame中的<html>元素被浏览器解释为非常宽,即使是580px div中iFrame页面上的唯一内容.

我已经尝试将CS​​S添加到iFrame中的HTML和BODY标签(例如宽度:98%或宽度:600px;)......其中没有一个似乎有任何影响.

打开对话框的代码如下.有什么建议?

$("a[providerId]").click(function(e) {
                e.preventDefault();
                var $this = $(this);
                var $width = 600;
                var $height = 400;
                $('<iframe id="companyDetail" class="companyDetail" style="padding: 0px;" src="' + this.href + '" />').dialog({
                    title: $this.attr('title'),
                    autoOpen: true,
                    width: $width,
                    height: $height,
                    modal: true,
                    resizable: false,
                    autoResize: true,
                    overlay: {
                        opacity: 0.5,
                        background: "black"
                    }
                }).width($width).height($height);
            });
Run Code Online (Sandbox Code Playgroud)

更新:看看这些演示,我得到了代码,看看我在说什么(在IE8中):http://elijahmanor.com/demos/jqueryuidialogiframe/index.html

iframe jquery jquery-ui jquery-ui-dialog

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