использование возвращает false в onclick событии, мешает браузеру обработать остальную часть стека выполнения, который включает переходить по ссылке в атрибут href.
, Другими словами, добавляя ложь возврата мешает href работать. В Вашем примере это точно, что Вы хотите.
кнопки In, это не необходимо, потому что onclick - все, что это будет когда-либо выполнять - нет никакого href, чтобы обработать и перейти в.
В Castle Windsor вы можете использовать время жизни PerWebRequest
, которое должно вполне соответствовать вашим требованиям.
Это означает, что вы можете просто внедрить HTTP-данные в свои службы. , и контейнер позаботится о надлежащем управлении сроком службы. Однако для этого необходимо также зарегистрировать все эти службы (и всех потребителей этих служб и т. Д.) Как PerWebRequest (или Transient), потому что, если вы зарегистрируете их как синглтоны, они сохранят устаревшие (и, возможно, удаленные) контексты.
Как и сказал Марк, вам необходимо зарегистрировать эти http-зависимые службы либо как PerWebRequest или Transient. Вот пример, который показывает, как зарегистрировать и внедрить HttpRequest или HttpContext:
public class Service {
private readonly HttpRequestBase request;
public Service(HttpRequestBase request) {
this.request = request;
}
public string RawUrl {
get {
return request.RawUrl;
}
}
}
...
protected void Application_Start(object sender, EventArgs e) {
IWindsorContainer container = new WindsorContainer();
container.AddFacility<FactorySupportFacility>();
container.AddComponentLifeStyle<Service>(LifestyleType.Transient);
container.Register(Component.For<HttpRequestBase>()
.LifeStyle.PerWebRequest
.UsingFactoryMethod(() => new HttpRequestWrapper(HttpContext.Current.Request)));
container.Register(Component.For<HttpContextBase>()
.LifeStyle.PerWebRequest
.UsingFactoryMethod(() => new HttpContextWrapper(HttpContext.Current)));
}
Используя HttpRequestBase
вместо HttpRequest
, вы можете легко смоделировать его для тестирования.
Также не забудьте зарегистрировать PerWebRequestLifestyleModule
в своем web.config.