小编Era*_*cht的帖子

在MVVM WPF中打开新窗口

我有Button,我已将此按钮绑定到ViewModel中的命令说OpenWindowCommand.当我点击按钮时,我想打开新窗口.但是创建窗口实例并从视图模型显示窗口违反了MVVM.我已经创建了界面

interface IWindowService
{
 void showWindow(object dataContext);
}
Run Code Online (Sandbox Code Playgroud)

和WindowService一样实现这个接口

class WindowService:IWindowService
{
 public void showWindow(object dataContext)
 {
  ChildWindow window=new ChildWindow();
  window.DataContext=dataContext;
  window.Show();
  }
}
Run Code Online (Sandbox Code Playgroud)

在这个课程中,我指定了ChildWindow.因此,这个类与显示ChildWindow紧密结合.当我想要显示另一个窗口时,我必须实现具有相同接口和逻辑的另一个类.如何使这个类通用,以便我可以传递任何窗口的实例,并且类将能够打开任何窗口?我没有使用任何构建的MVVM框架.我已经阅读了很多关于StackOverflow的文章,但我找不到任何解决方案.

c# wpf mvvm

39
推荐指数
2
解决办法
6万
查看次数

Openshift端口转发

已经有很多关于它的话题.但我被卡住了

我成功配置了ssh!

SSH

现在我想配置端口转发以与TOAD连接.我使用了这个tut:https://blog.openshift.com/getting-started-with-port-forwarding-on-openshift/

现在当我尝试rhc port-forward -a php时

我得到这个错误无法解析PKey:没有起始行

港口前进

我创建了这个:http: //blog.skypayjm.com/2015/02/accessing-remote-openshifts-database.html

我试图降级ssh,但它没有改变任何东西.

有人知道我做错了什么吗?真诚的,布莱希特

ruby ssh gem openshift

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

使用 ASP.NET Core Identity 在 Cookie 中保存令牌

我想在我的“身份”生成的 cookie 中保存一些东西。我目前正在使用文档中的默认身份设置。

启动文件

services.Configure<IdentityOptions>(options =>
{
    // User settings
    options.User.RequireUniqueEmail = true;

    // Cookie settings
    options.Cookies.ApplicationCookie.AuthenticationScheme = "Cookies";
    options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromHours(1);
    options.Cookies.ApplicationCookie.SlidingExpiration = true;
    options.Cookies.ApplicationCookie.AutomaticAuthenticate = true;
    options.Cookies.ApplicationCookie.LoginPath = "/Account";
    options.Cookies.ApplicationCookie.LogoutPath = "/Account/Logout";
});
Run Code Online (Sandbox Code Playgroud)

账户控制器.cs

var result = await _signInManager.PasswordSignInAsync(user.UserName, model.Password, true, true);

if (result.Succeeded)
{
    _logger.LogInformation(1, "User logged in.");

    var tokens = new List<AuthenticationToken>
    {
        new AuthenticationToken {Name = "Test", Value = "Test"},
    };


    var info = await HttpContext.Authentication.GetAuthenticateInfoAsync("Cookies");
    info.Properties.StoreTokens(tokens);
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用。因为 cookie 还没有创建。“信息”变量为空。

我可以通过使用“CookieMiddleware”来解决它

启动文件

app.UseCookieAuthentication(new CookieAuthenticationOptions
{ …
Run Code Online (Sandbox Code Playgroud)

c# asp.net cookies asp.net-identity asp.net-core

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

ASP.Net Core 错误 JSON

我正在玩一点 ASP.NET Core。我正在创建一个基本的 webapi。我想在出现问题时显示 JSON 错误。

打印屏幕在屏幕上显示我想要的内容。唯一的问题是发送时状态码为 200。

打印屏幕

catch (NullReferenceException e)
{
    return Json(NotFound(e.Message));
}
Run Code Online (Sandbox Code Playgroud)

我可以通过这样做来解决它:

return NotFound(new JsonResult(e.Message) {StatusCode = 404);
Run Code Online (Sandbox Code Playgroud)

但我不喜欢这样,因为现在您可以使用 NotFound 指定状态代码 500。

有人可以把我引向正确的方向吗?

此致,布莱希特

c# asp.net json asp.net-core-mvc asp.net-core

2
推荐指数
1
解决办法
5069
查看次数

实体框架扩展方法ICollection/IQueryable

我需要where多次检查相同的特定条件(子句):

return _ctx.Projects.Where(p => p.CompanyId == companyId &&
                          (p.Type == Enums.ProjectType.Open || 
                           p.Invites.Any(i => i.InviteeId == userId))).ToList()
Run Code Online (Sandbox Code Playgroud)

'&&'之后的部分将导致用户无法检索受限制的项目.

我想把这个检查抽象成一个函数.将来这些条件可能会改变,我不想替换所有LINQ查询.

我用以下扩展方法做到了这一点:

public static IQueryable<Project> IsVisibleForResearcher(this IQueryable<Project> projects, string userId)
{
    return projects.Where(p => p.Type == Enums.ProjectType.Open || 
                               p.Invites.Any(i => i.InviteeId == userId));
}
Run Code Online (Sandbox Code Playgroud)

现在我可以将LINQ查询更改为:

return _ctx.Projects.Where(p => p.CompanyId == companyId)
                    .IsVisibleForResearcher(userId).ToList()
Run Code Online (Sandbox Code Playgroud)

这会生成相同的SQL查询.现在我的问题开始时我想在另一个有项目的DbSet上使用这个扩展方法.

想象一下,公司有项目.我只想检索用户至少可以看到一个项目的公司.

return _ctx.Companies
       .Where(c => c.Projects.Where(p => 
            p.Type == Enums.ProjectType.Open || 
            p.Invites.Any(i => i.InviteeId == userId))
       .Any())
Run Code Online (Sandbox Code Playgroud)

在这里我也想使用扩展方法.

return _ctx.Companies
       .Where(c => c.Projects.AsQueryable().IsVisibleForCompanyAccount(userId).Any())
Run Code Online (Sandbox Code Playgroud)

这引发以下异常:

Remotion.Linq.dll中出现"System.NotSupportedException"类型的异常,但未在用户代码中处理

附加信息:无法解析表达式'c.Projects.AsQueryable()':目前不支持方法'System.Linq.Queryable.AsQueryable'的重载.

比我创建了以下扩展方法: …

.net c# linq entity-framework entity-framework-core

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