小编Ask*_*ein的帖子

MVC 5.0 [AllowAnonymous]和新的IAuthenticationFilter

当我创建一个新的asp.net mvc 4.0应用程序时,我做第一件事就是创建并设置一个自定义授权,global filter如下所示:

//FilterConfig.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
 //filters.Add(new HandleErrorAttribute());
 filters.Add(new CustomAuthorizationAttribute());
}
Run Code Online (Sandbox Code Playgroud)

然后我创建了CustomAuthorizationAttribute这样的:

//CustomAuthorizationAttribute.cs
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAjaxRequest())  
        {
            //Handle AJAX requests
            filterContext.HttpContext.Response.StatusCode = 403;
            filterContext.Result = new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet };
        }
        else
        {
            //Handle regular requests
            base.HandleUnauthorizedRequest(filterContext); //let FormsAuthentication make the redirect based on the loginUrl defined in the web.config (if any)
        }
    }
Run Code Online (Sandbox Code Playgroud)

我有两个控制器:HomeControllerSecureController

HomeController使用[AllowAnonymous] …

c# asp.net-mvc-5

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

如何使用MVVM将焦点设置到文本框?

如何从ViewModel wpf中聚焦文本框?

<TextBox Name="PropertySearch"
         Text="{Binding UpdateSourceTrigger=PropertyChanged, 
                        Mode=TwoWay, Path=PropertySearch, 
                        ValidatesOnDataErrors=True}"  
         Width="110" 
         Height="25" 
         Margin="10" />
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml mvvm

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

如何删除Entity Framework Core中的多个行?

我需要使用Entity Framework Core从数据库中删除多行.

此代码不起作用:

foreach (var item in items)
{
    myCollection.Remove(item);
}
Run Code Online (Sandbox Code Playgroud)

因为我收到错误"InvalidOperationException:Collection被修改;枚举操作可能无法执行"在第一个对象之后.换句话说,.Remove只删除一个对象.

实体框架核心没有.RemoveRange,所以我不知道如何执行此操作.

为了保持与各种数据库提供程序的最大兼容性,我宁愿不调用context.Database.ExecuteSqlCommand("从physical_table中删除where ...").有合适的解决方案吗?谢谢!

c# entity-framework-core

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

Azure功能,EF Core,无法加载ComponentModel.Annotations 4.2.0.0

我创建了几个.Net Standard 2.0库,通过控制台应用程序测试执行,以及几个测试 - 一切都很好.

切换到azure函数,并获得以下运行时错误: 在此输入图像描述

然后我尝试将该特定版本下载到API Function项目中: 在此输入图像描述

我正在使用Visual Studio版本15.7.0预览5.0.我已将Azure功能更新为4.7 ...因为控制台和测试项目是 - 并且这些工作.

这是一个太多的小时..所以我希望决议不是疯狂的事情.Ef Core 2.1.0-rc1-final也在混合中.使用Required,MaxLength,NotMapped的数据注释.

图形错误说:Microsoft.EntityFrameworkCore:无法加载文件或程序集'System.ComponentModel.Annotations,Version = 4.2.0.0

c# entity-framework-core azure-functions

15
推荐指数
3
解决办法
5646
查看次数

绑定到对象的属性

我想网格中的一系列TextBox 绑定一个对象的属性中,该对象本身就是我的ViewModel(DataContext)中的另一个属性.

CurrentPersonNameAge属性组成

在ViewModel中:

public Person CurrentPerson { get; set ... (with OnPropertyChanged)}
Run Code Online (Sandbox Code Playgroud)

Xaml:

<TextBox Text="{Binding Name}" >
<TextBox Text="{Binding Age}" >
Run Code Online (Sandbox Code Playgroud)

我不确定使用的方法,我在网格范围内设置了另一个DataContext,没有任何结果,还尝试设置源和路径,如Source = CurrentPerson,Path = Age,没有任何结果,这些都是试用,看看如果有任何改变.

我该怎么做到这一点?

c# wpf binding mvvm

14
推荐指数
2
解决办法
4万
查看次数

实体框架6:代码优先级联删除

所以这里有几个类似的问题,但我仍然有问题确定我在简化场景中究竟缺少了什么.

假设我有以下表格,巧妙地以自己的名字命名:

'JohnsParentTable' (Id, Description) 
'JohnsChildTable' (Id, JohnsParentTableId, Description)
Run Code Online (Sandbox Code Playgroud)

结果类看起来像这样

public class JohnsParentTable
{
    public int Id { get; set; }
    public string Description { get; set; }
    public virtual ICollection<JohnsChildTable> JohnsChildTable { get; set; }

    public JohnsParentTable()
    {
        JohnsChildTable = new List<JohnsChildTable>();
    }
}

internal class JohnsParentTableConfiguration : EntityTypeConfiguration<JohnsParentTable>
{
    public JohnsParentTableConfiguration()
    {
        ToTable("dbo.JohnsParentTable");
        HasKey(x => x.Id);
        Property(x => x.Id).HasColumnName("Id").IsRequired().HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        Property(x => x.Description).HasColumnName("Description").IsRequired().HasMaxLength(50);
    }
}

public class JohnsChildTable
{
    public int Id { get; set; }
    public string Description …
Run Code Online (Sandbox Code Playgroud)

c# sql entity-framework entity-framework-6

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

将参数传递给MVVM命令

有谁知道如何传递参数Command使用CommandHandler?我们假设我想从XAML传递字符串硬编码值.我知道如何从XAML传递,但不知道如何在后面的MVVM代码中处理它.如果不需要传递任何参数,下面的代码可以正常工作.

public ICommand AttachmentChecked
{
    get
    {
        return _attachmentChecked ?? (_attachmentChecked = new CommandHandler(() => ExecuteAttachmentChecked(), CanExecuteAttachmentChecked()));
    }
}

private void ExecuteAttachmentChecked()
{        
}

private bool CanExecuteAttachmentChecked()
{
    return true;
}
Run Code Online (Sandbox Code Playgroud)

CommandHandler:

public class CommandHandler : ICommand
{
    private Action _action;
    private bool _canExecute;

    public CommandHandler(Action action, bool canExecute)
    {
        _action = action;
        _canExecute = canExecute;
    }

    public bool CanExecute(object parameter)
    {
        return _canExecute;
    }

    public event EventHandler CanExecuteChanged;

    public void Execute(object parameter)
    {
        _action();
    } …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm

14
推荐指数
4
解决办法
4万
查看次数

将零值格式化为空字符串?

我在第一次涉足WPF字符串格式时遇到了困难.我希望能够在基础值为零时使用空字符串格式化数据网格中的文本框列,并将所有其他值格式化为0.000.但是,我的XAML似乎不能胜任这项工作,因为它显示所有值的空白而不仅仅是零:

<DataGridTextColumn Header="dL" Binding="{Binding Path=Value.DLHistoric, StringFormat='{}{0.000;; }'" Width="Auto" />
Run Code Online (Sandbox Code Playgroud)

我正在使用这里描述的分号运算符,并在第二个分号后面添加了一个空格来获取空字符串.

非常感谢!

更新

这样做的诀窍:

<DataGridTextColumn Header="dL" Binding="{Binding Path=Value.DLHistoric, StringFormat=0.000;;#}" Width="Auto" />
Run Code Online (Sandbox Code Playgroud)

c# wpf formatting xaml datagrid

13
推荐指数
1
解决办法
6955
查看次数

ReactiveUI异常处理

我查看了一些ReactiveUI示例,但是我看不到一个如何处理异常的简单示例,其中应该向用户显示消息.(如果有一个很好的例子可以有人指出我吗?).

我的第一个问题是如何使用ReactiveCommand和ToProperty处理异常.例如,我有以下代码:

public class MainWindowViewModel : ReactiveObject
{
    public ReactiveCommand CalculateTheAnswer { get; set; }

    public MainWindowViewModel()
    {
        CalculateTheAnswer = new ReactiveCommand();

        CalculateTheAnswer
            .SelectMany(_ => AnswerCalculator())
            .ToProperty(this, x => x.TheAnswer);

        CalculateTheAnswer.ThrownExceptions
            .Select(exception => MessageBox.Show(exception.Message));
    }

    private readonly ObservableAsPropertyHelper<int> _theAnswer;
    public int TheAnswer
    {
        get { return _theAnswer.Value; }
    }

    private static IObservable<int> AnswerCalculator()
    {
        var task = Task.Factory.StartNew(() =>
        {
            throw new ApplicationException("Unable to calculate answer, because I don't know what the question is");
            return 42;
        });

        return task.ToObservable();
    } …
Run Code Online (Sandbox Code Playgroud)

c# reactiveui

13
推荐指数
1
解决办法
3774
查看次数

如何在新的 ASP.NET Core 7 项目中选择身份验证类型?

我想了解如何创建具有用户的 ASP.NET Core MVC 7 应用程序。

当我创建新的 ASP.NET Core Web 应用程序时,系统会询问我要使用哪种类型的身份验证类型:

附加信息截图

我以前从未这样做过,所以我真的不知道。小“信息”圈也没有任何帮助。

认证方式

我刚刚学习,所以不需要支付 Azure 云数据库服务的费用。我找到了一些教程,但它们似乎都是针对旧版本的,比如 MVC 3 的这个:

https://learn.microsoft.com/en-us/aspnet/mvc/overview/older-versions/mvc-music-store/mvc-music-store-part-7

Microsoft 在此处提供了 ASP.NET Core 7 教程:

https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/start-mvc?view=aspnetcore-7.0&tabs=visual-studio

但是,他们选择选择“无”作为身份验证。它确实说:

有关详细信息,包括创建项目的替代方法,请参阅在 Visual Studio 中创建新项目

但是,在 Visual Studio 中创建新项目的链接也使用 None 作为身份验证。

这里有一些答案谈论它:

如何在asp.net core中获取当前用户

但是,没有人说从哪里开始。

我是新手,所以我真的不知道从哪里开始。

理想情况下,我希望将我的用户存储在 Microsoft SQL 数据库中。

c# asp.net-core visual-studio-2022

13
推荐指数
1
解决办法
7473
查看次数