小编Jat*_*tin的帖子

生成MD5哈希的大小

我将使用MD5哈希来存储加密密码.密码长度可以是6到40个字符.存储加密密码所需的数据库列大小是多少.此外,如果40个字符的散列大小非常大,那么20个字符的密码需要多少散列大小?

FormsAuthentication.HashPasswordForStoringInConfigFile(stringToEncrypt, "MD5");用来生成用于存储在数据库中的哈希.

c# hash form-authentication

9
推荐指数
2
解决办法
3万
查看次数

如何在记录代码中使用IEnumerable <String>

我有这个方法,我试图生成文档.

    /// <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

9
推荐指数
1
解决办法
1945
查看次数

Combobox背景未应用于Windows 8

我对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上组合框外观的屏幕截图 在此输入图像描述

wpf themes wpf-4.0

8
推荐指数
1
解决办法
7229
查看次数

Caliburn Message.Attach()抛出"找不到方法的目标"

我有一个列表框,我正在为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)

c# wpf caliburn.micro wpf-4.0

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

与ASP.net MVC中的Ajax请求中的错误处理有关的疑问

我使用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)

iis ajax asp.net-mvc iis-7 asp.net-mvc-3

6
推荐指数
1
解决办法
1437
查看次数

wpf DataGrid 在失去焦点时失去其行选择

我在使用 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 属性将失去其值,但背景仍与触发器中指定的一样。有没有人遇到过这种行为,或者我上面的代码(或我的应用程序中的其他地方)存在一些问题。上述问题的任何解决方法?

wpf

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

查询实体会在枚举字段上引发"无效操作异常"

我只是尝试了实体框架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)

entity-framework ef-code-first entity-framework-5

4
推荐指数
1
解决办法
2980
查看次数

自定义附加属性的模板绑定

我正在尝试使用按钮控制中的图像,通过显示不同的图像来动画显示悬停和按下状态.因此,我已经为按钮控件定义了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)

wpf dependency-properties attached-properties

4
推荐指数
1
解决办法
1464
查看次数

httpErrors errorMode = "Detailed" 仅适用于特定错误代码

我有一个 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 自定义页面。

asp.net-mvc iis-7 iis-7.5 asp.net-mvc-3

3
推荐指数
1
解决办法
5932
查看次数

Prism-如何使用MEF在ViewModel中导入IRegionManager

我们如何使用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。

wpf prism prism-4

3
推荐指数
1
解决办法
3085
查看次数

实体框架更新多对多关系 - POCO

我遵循两个实体RelayConfigStandardContact之间的多对多关系

实体:

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)

entity-framework ef-code-first entity-framework-4.1

3
推荐指数
1
解决办法
6837
查看次数