小编eli*_*iah的帖子

Html.CheckBox即使模型值为true也未检查

我有一个由视图模型支持的Razor局部视图,其中包含一个名为UseDuo的bool.假设UseDuo属性为true,我将以下代码放入我的Razor中:

@Html.CheckBox("UseDuo", Model.UseDuo) @* Not checked *@
@Html.CheckBoxFor(m => m.UseDuo) @* Not checked *@
@Html.CheckBox("UseDuo2", Model.UseDuo) @* checked *@
@(Model.UseDuo ? "UseDuo=true" : "UseDuo=false") @* outputs UseDuo=true *@
Run Code Online (Sandbox Code Playgroud)

未检查前两个复选框,但检查第三个复选框,最后一行输出为"UseDuo = true".是什么赋予了?根据我对这些Html助手的理解,应该检查所有三个复选框.但似乎如果我的复选框的名称与我的模型属性的名称匹配,则拒绝正确检查.

我尝试调试.Net MVC源代码,但是调试器拒绝给出我调用的大多数变量的值,所以这没什么帮助.

编辑:刚才意识到这里没有实际问题.我的问题:为什么不检查前两个盒子?

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

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

如何在EndRequest中使用Autofac?

我正在使用Autofac和.Net MVC 3.似乎Autofac在Application_EndRequest中处理了生命周期范围,这是有道理的.但是当我尝试在我自己的代码中找到一个在EndRequest期间执行的服务时,这会导致此错误:

 MESSAGE: Instances cannot be resolved and nested lifetimes cannot be created from this LifetimeScope as it has already been disposed.
STACKTRACE: System.ObjectDisposedException
  at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters)
  at Autofac.ResolutionExtensions.ResolveOptionalService(IComponentContext context, Service service, IEnumerable`1 parameters)
  at System.Web.Mvc.DependencyResolverExtensions.GetService[TService](IDependencyResolver resolver)
Run Code Online (Sandbox Code Playgroud)

作为参考,这是我用来尝试解析服务的代码:

    public T GetInstance<T>()
    {
        return DependencyResolver.Current.GetService<T>();
    }
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以让我从EndRequest执行的代码利用Autofac进行服务解析?

编辑:我想在EndRequest期间使用单独的范围进行操作,正如Jim在下面建议的那样.但是,这意味着注册的任何服务都InstancePerHttpRequest将在EndRequest期间获得新实例,这似乎是不理想的.

c# asp.net autofac

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

如何为 NSubstitute .Received 调用指定失败消息?

在 NSubstitute 中,是否可以指定在 Received 失败时应抛出的消息?像下面这样:

[Test]
public void Should_execute_command()
{
    var command = Substitute.For<ICommand>();
    var something = new SomethingThatNeedsACommand(command);

    something.DoSomething();

    command.Received()
        .Execute()
        .Because("We should have executed the command that was passed in");
}
Run Code Online (Sandbox Code Playgroud)

为了进行比较,在 Moq 中,您可以这样做:

command.Verify(c => c.Execute, "We should have executed the command that was passed in");
Run Code Online (Sandbox Code Playgroud)

然后您会收到该消息作为测试运行程序中测试失败消息的一部分。这有助于使测试失败更容易阅读/诊断。NSubstitute中有类似的东西吗?

c# nsubstitute

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

关闭单个字段的输入验证

我有一个ASP.NET 4站点,我想让人们在他们的密码中加上"<".但是,.NET通过阻止(它看到的)尝试将HTML放在表单字段中来阻碍.我知道我可以完全关闭输入验证,但我只想为这一个字段关闭它.有谁知道一个简单的方法吗?

asp.net validation webforms

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