我有一个由视图模型支持的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源代码,但是调试器拒绝给出我调用的大多数变量的值,所以这没什么帮助.
编辑:刚才意识到这里没有实际问题.我的问题:为什么不检查前两个盒子?
我正在使用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期间获得新实例,这似乎是不理想的.
在 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中有类似的东西吗?
我有一个ASP.NET 4站点,我想让人们在他们的密码中加上"<".但是,.NET通过阻止(它看到的)尝试将HTML放在表单字段中来阻碍.我知道我可以完全关闭输入验证,但我只想为这一个字段关闭它.有谁知道一个简单的方法吗?