我将使用MD5哈希来存储加密密码.密码长度可以是6到40个字符.存储加密密码所需的数据库列大小是多少.此外,如果40个字符的散列大小非常大,那么20个字符的密码需要多少散列大小?
我FormsAuthentication.HashPasswordForStoringInConfigFile(stringToEncrypt, "MD5");用来生成用于存储在数据库中的哈希.
我有这个方法,我试图生成文档.
/// <summary>
/// This method demonstrates taking a Func as argument and perform that action(Func) on a list of strings.</summary>
/// <param name="listOfStrings"> ... </param>
/// <param name="ActionToPerformOnEach"> ... </param>
/// <returns>Returns an <see cref="IEnumerable{String}" /> which has elements that resulted due to the Func action </returns>
public static IEnumerable<String> ActOnListWithFunc(List<string> listOfStrings, Func<string, string> ActionToPerformOnEach) {
foreach (string s in listOfStrings) {
string actedString = ActionToPerformOnEach(s);
yield return actedString;
}
}
Run Code Online (Sandbox Code Playgroud)
这会生成这样的文档(仅显示返回值部分)
Return Value
Type: IEnumerable<String>
Returns …Run Code Online (Sandbox Code Playgroud) c# sandcastle documentation-generation visual-studio visual-studio-2012
我对wpf主题有点困惑.我想让Vista,Windows 7和Windows 8上的wpf屏幕看起来一样.所以我相应地设计了组件,除了在Windows 8上运行外,它们不会出现问题.例如我有一个组合框,我就是像这样在xaml中更改其默认背景.
<Style TargetType="{x:Type ComboBox}" >
<Setter Property="FontStyle" Value="Normal"/>
<Setter Property="Height" Value="24" />
<Setter Property="Background" Value="{StaticResource GradientButtonBackgroundBrush}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
组合框背景属性在Windows 8中没有任何效果,我得到的是一个带右箭头的扁平矩形(默认的窗口8组合框,设计相当糟糕!).
所以,我的问题是如何在所有版本的Windows上使组合框看起来一样.我尝试在我的App.xaml中添加Windows Aero主题,如下所示,但它对组合框显示没有影响.这是我添加Aero主题的方式
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/PresentationFramework.Aero;component/themes/aero.normalcolor.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
关于主题还有另一个疑问.我正在Windows 7机器上构建wpf应用程序,默认情况下(我相信)已经设置了Aero Theme.因此,在Windows 7计算机上查看时,我的所有样式都基于Aero主题.如果我在XP上运行应用程序会发生什么.那么我是否需要在App.xaml中添加资源字典(Aero主题)的条目,如上面的代码中所列?
我知道我的问题有点模糊,但请相信我,我真的很困惑wpf在不同Windows版本上的默认主题.
编辑: 我仍然无法根据我的需要得到组合框.组合框仍然看起来像一个灰色矩形.
这就是我做的.我从microsoft的网站下载了Aero.NormalColor.xaml,并将其包含在应用程序的themes文件夹中.然后我在App.xaml中添加了以下内容
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/Aero.NormalColor.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
然后我编译了应用程序并部署在Windows 8上.仍然是如前所示的组合框.请注意,所有其他元素都根据主题进行了正确的样式设置.我对Luna.Metallic.xaml做了同样的事情,除了ComboBox之外,每个元素都有样式.
我相信当我加载一个用ControlTemplate定义样式的特定主题时,它应该被wpf选中.我很困惑为什么只有ComboBox即使给它一个Aero(或Luna)控制模板后也不会改变它的外观.有任何想法吗 ?
EDIT-2
Windows 8上组合框外观的屏幕截图

我有一个列表框,我正在为ItemContainer设置样式以包含上下文菜单.这是同样的xaml.
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
...
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Remove Group" cal:Message.Attach="DeleteGroup"/>
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
我在ViewModel中编写了目标方法,如下所示.
public void DeleteGroup() { //ToDo
...
}
Run Code Online (Sandbox Code Playgroud)
ViewModel被设置为UserControl的DataContext,其中有ListBox.
上面的代码导致"找不到方法的目标".我不知道为什么这不起作用.我也试过以下变化
<MenuItem Header="Remove Group" cal:Message.Attach="DeleteGroup"
cal:Action.Target="{Binding ElementName=UCRelayDispositionView, Path=DataContext}">
Run Code Online (Sandbox Code Playgroud)
其中UCRelayDispositionView是UserControl的名称.
为什么上面的代码不起作用?
编辑:1 还尝试了以下内容
<MenuItem Header="Remove Group" cal:Message.Attach="DeleteGroup"
cal:Action.TargetWithoutContext="{Binding ElementName=UCRelayDispositionView, Path=DataContext}">
Run Code Online (Sandbox Code Playgroud)
还有这个
<MenuItem Header="Remove Group" cal:Message.Attach="DeleteGroup"
cal:Action.TargetWithoutContext="{Binding ElementName=UCRelayDispositionView}">
Run Code Online (Sandbox Code Playgroud)
编辑:2 我试图在ItemContainer上以下列方式使用Tag,但它也不起作用.
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Tag" Value="{Binding Path=DataContext, ElementName=UCRelayDispositionView}"/>
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Remove Group"
cal:Message.Attach="DeleteGroup()"
cal:Action.TargetWithoutContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}"/>
</ContextMenu>
</Setter.Value> …Run Code Online (Sandbox Code Playgroud) 我使用Visual Studio 2010在我的本地计算机上开发了一些Web应用程序已有几天了.昨晚我在IIS 7上部署了我的应用程序,并且令人沮丧地偶然发现了一个主要的节目限制器.该问题与Ajax请求中的错误处理有关.首先,我有一些编辑屏幕可以处理ajax请求.以下是Ajax编辑屏幕的ajax部分.
@using (Ajax.BeginForm("_CityEdit", null, new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "content",
LoadingElementId="imgSaveLoading", OnFailure="onError",
OnSuccess = "onSuccess" }, new { id = "frmCity" })) {
<img id="imgSaveLoading" alt="loading" src="@Url.Content("~/Content/Telerik/Vista/loading.gif")" class="ajax-loader-user" />
<div class="content" id="content">
@{Html.RenderPartial("_CityEdit");}
</div>
<!-- Some Other code here -->
}
Run Code Online (Sandbox Code Playgroud)
我依赖于上面的Ajax.BeginForm()的"onError"回调.所以在我的控制器中,每当我想向用户显示错误(模型错误或任何其他错误)时,我只是乐观地将服务器响应设置为500(内部服务器错误),希望这会导致Ajax.BeginForm的"OnError"处理程序()被调用.这是我在控制器中如何做到这一点的片段.
[HttpPost]
public ActionResult _CityEdit(CityViewModel viewModel) {
city = cityManager.FindCity(viewModel.City.Id, false);
// Validate Model here
if (!TryUpdateModel(city, "City")) {
Response.StatusCode = 500;
return PartialView("_CityEdit", viewModel);
}
Run Code Online (Sandbox Code Playgroud)
从上面的代码可以看出,我返回了PartialView,如果它包含Model Errors,它们将自动显示在Ajax Edit屏幕上.然后在"OnError"JavaScript中,我只需用控制器返回的PartialView替换相关的div,就像这样.
function onError(xhr) {
$('#content').html(xhr.responseText); …Run Code Online (Sandbox Code Playgroud) 我在使用 DataGrid 时遇到了一个非常奇怪的行为。我在 DataGridRow 上有以下触发器
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource SelectionBackgroundBrush}"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
最初选择行时,我从上面的触发器中获得行为。但是,选择后,如果 DataGrid 失去焦点(例如,我单击窗口上的某个其他按钮),则 Foreground 属性将失去其值,但背景仍与触发器中指定的一样。有没有人遇到过这种行为,或者我上面的代码(或我的应用程序中的其他地方)存在一些问题。上述问题的任何解决方法?
我只是尝试了实体框架5和kendo ui的一些功能.我有以下ProductType枚举
public enum ProductType {
[Description("Hazardous")]
Hazardous,
[Description("Non Hazardous")]
NonHazardous
}
Run Code Online (Sandbox Code Playgroud)
此枚举类型是产品实体中的字段之一.
[Table("Products")]
public class Product {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
//Other Fields ...
[Required(ErrorMessage="Product Type is Required")]
public ProductType ProductType {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
基础SQL Server数据库中的ProductType列定义为(tinyint,not null).
我在MVC的以下控制器操作中访问产品列表
public ActionResult _ProductList(int pageSize, int skip) {
using (WorkUnit workUnit = new WorkUnit()) {
IQueryable<Product> products = workUnit.ProductRepository.GetAllProducts()
.Include(p => p.Category);
int total = products.Count();
List<Product> productList = products.ToList<Product>(); //Throws InvalidOperationException …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用按钮控制中的图像,通过显示不同的图像来动画显示悬停和按下状态.因此,我已经为按钮控件定义了3个附加属性,如下所示.
public class ButtonExtensions : DependencyObject {
public static DependencyProperty ImageSourceProperty = ...
public static DependencyProperty ImageHoverSourceProperty = ...
public static DependencyProperty ImagePressedSourceProperty =
DependencyProperty.RegisterAttached("ImagePressedSource", typeof(string), typeof(ButtonExtensions));
public static string GetImagePressedSource(Button target) { return (string)target.GetValue(ImagePressedSourceProperty); }
public static void SetImagePressedSource(Button target, string value) { target.SetValue(ImagePressedSourceProperty, value); }
Run Code Online (Sandbox Code Playgroud)
我在Button的Style属性设置器中设置了这些属性,如下所示
<Style x:Key="AddButtonStyle" TargetType="{x:Type Button}" >
<Setter Property="gs:ButtonExtensions.ImageSource" Value="/HotelReservation.ControlLibrary;component/Images/add-record-icon.png"/>
<Setter Property="gs:ButtonExtensions.ImageHoverSource" Value="/HotelReservation.ControlLibrary;component/Images/add-record-hover-icon.png"/>
<Setter Property="gs:ButtonExtensions.ImagePressedSource" Value="/HotelReservation.ControlLibrary;component/Images/add-record-pressed-icon.png"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid Height="32" Width="32">
<!-- How to use TemplateBinding Here. This does not …Run Code Online (Sandbox Code Playgroud) 我有一个 asp.net MVC3 应用程序。在我的控制器中,我有一个 ajax 操作,它使用 Response.StatusCode = 600 设置自定义响应代码。我需要按原样传递响应,而无需 IIS 尝试查找自定义错误页面。我尝试使用以下代码让 IIS 不使用其自定义页面来响应状态 600。
<!-- Pass through Ajax Errors with status code 600 -->
<httpErrors errorMode="Detailed" existingResponse="PassThrough">
<error statusCode="600" path="/" />
</httpErrors>
<!--End -->
Run Code Online (Sandbox Code Playgroud)
上述代码片段的问题在于,这适用于所有响应代码,因此即使代码因 500 Internal Server 而失败,响应也会按原样传递,而不会受到 IIS 干扰。这会将我的内部控制器和视图代码公开给用户(如果偶然发生一些我尚未处理的异常)。
那么,如何配置 web.config 仅当 response.statuscode 为 600(自定义)时才传递详细响应,并为其他错误(例如内部服务器错误 500)提供默认 IIS 自定义页面。
我们如何使用MEF容器在ViewModel中注入IRegionManager。我必须在ViewModel的Command委托中切换视图。这是我在做什么的简短描述。我有一个名为Product的实体,其列表显示在一个视图(ProductListView)中。在该视图中,用户可以选择产品,然后单击“编辑”按钮。这将切换视图并显示一个新的View(ProductEditView)。为了激活一个不同的视图,我需要引用IRegionManager像这样
public class ProductListVM : NotificationObject { //The Product List View Model
[Import]
public IRegionManager RegionManager { get; set; }
private void EditProduct() { //EditCommand fired from ProductListView
IRegion mainContentRegion = RegionManager.Regions["MainRegion"];
//Switch the View in "MainContent" region.
....
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码因RegionManager的NullReferenceException而失败。这似乎是合乎逻辑的,因为上述视图模型是由WPF通过Xaml中的DataContext属性构造的,并且DI不会起作用,因此它没有机会导入RegionManager实例。在这种情况下,我们如何解决IRegionManager。
我遵循两个实体RelayConfig和StandardContact之间的多对多关系
实体:
public class RelayConfig : EntityBase, IDataErrorInfo {
...
//Associations
public virtual ICollection<StandardContact> StandardContacts { get; set; }
}
public class StandardContact :EntityBase, IDataErrorInfo {
...
//Associations
public virtual ICollection<RelayConfig> RelayConfigs { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试更新RelayConfig及其与StandardContact的关系.这是更新RelayConfig的代码.
public class RelayConfigRepository : GenericRepository<RelayConfig> {
....
public void Update(RelayConfig relayConfig, List<StandardContact> addedContacts, List<StandardContact> deletedContacts) {
context.RelayConfigs.Add(relayConfig);
if (relayConfig.Id > 0) {
context.Entry(relayConfig).State = EntityState.Modified;
}
addedContacts.ForEach(ad => relayConfig.StandardContacts.Add(ad));
foreach (StandardContact standardContact in relayConfig.StandardContacts) {
if (standardContact.Id > …Run Code Online (Sandbox Code Playgroud)