CallContext和ThreadStatic有什么区别?
我知道在ASP.NET环境中,存储在CallContext中的数据可以在整个请求中持久存在,直到它结束,而ThreadStatic可能会或可能不会工作,因为请求可能会切换线程.我还了解到HttpContext是使用CallContext在内部存储的.
在常规应用程序中,它们似乎都在同一个线程调用中持久存在.什么时候不是这样的?
编辑:在评论中我了解到调用上下文是线程静态存储的抽象.ASP.NET框架显式地将数据从一个线程移动到下一个处理一个请求的线程.其他想要提供线程敏捷性的框架可以对上下文存储执行相同的操作.
许多(大多数?)旨在实现可访问性和标准合规性的站点使用无序列表进行导航.这是否使网站更易于访问,还是仅提供有用的样式元素?
我不介意他们,我一直在以这种方式使用无序列表.就是这样,当我从页面中删除样式以试图衡量它的可访问性时,它让我觉得它也可以是简单的链接.这是从哪里来的?
您将如何在ASP.NET MVC视图中支持外部可组合部分?
这是什么意思?想想"每个页面上的登录框"或"iGoogle".这些东西需要位于每个控制器/视图外部的某些位置.
一种方法是在视图中添加组件,如下所示:
<% foreach (var component in GetComponents()) {%>
<%= Html.RenderPartial(component.ViewName, component.ViewData)%>
<%} %>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我正在寻找一种方法,让每个组件的控制器提供viewname和viewdata,而不是显示它们的视图的控制器.您可以建议的任何完全不同的解决方案也会引起关注.过滤器,WebForms等
更新:我会试着用一个例子来解释我想要解决的问题.我会选择登录功能.
在典型的webforms应用程序中,这可以是一个用户控件,它在页面生命周期的load事件中检索适当的数据并更新一些UI控件.点击后页面将回发,我们可以在同一用户控件中的点击事件中对发布的信息进行操作.
从我目前对ASP.NET MVC样式的理解来看,首先接受请求的控制器将检索适当的数据并将其传递给视图,然后视图将其传递给登录部分视图.登录视图将定义一个表单,其后置操作指向登录控制器的登录操作.在发布信息时使用的登录操作,我们可以选择一起使用一些漂亮的方案,原来的控制器传递请求.
我假设有一种比上面更聪明的方法,不需要我将控制器逻辑放在视图/母版页中.
是否可以使用从UIView继承的自定义类的其他属性来扩展界面构建器的属性检查器?
外出风格:
bool result;
if(something.TryParse(val, out result))
{
DoSomething(result);
}
Run Code Online (Sandbox Code Playgroud)
可空的风格:
bool? result = something.TryParse2(val);
if(result.HasValue)
{
DoSomething(result.Value);
}
Run Code Online (Sandbox Code Playgroud)