我有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的文章,但我找不到任何解决方案.
已经有很多关于它的话题.但我被卡住了
我成功配置了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,但它没有改变任何东西.
有人知道我做错了什么吗?真诚的,布莱希特
我想在我的“身份”生成的 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) 我正在玩一点 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。
有人可以把我引向正确的方向吗?
此致,布莱希特
我需要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'的重载.
比我创建了以下扩展方法: …