小编Viv*_*ndi的帖子

将ViewModel类放在MVC中的位置

我的问题很简单.我想知道将我ViewModels放在MVC应用程序中的哪个位置.

目前我正在处理的项目只有ViewModels,它们存储在Models文件夹中.在该文件夹中,我们直接创建ViewModel类.

但通常我也会有Model类,从数据库或其他东西获取数据.然后从Controller我'谈'到模型方法并将结果存储在ViewModel属性中.

但是当我使用它们时,我在哪里放置Model类和ViewModel类?在构建这两个文件/文件夹的意义上,什么是良好的做法?

c# asp.net model viewmodel

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

根据您的最小稳定性设置,该包装不具备足够稳定的版本

我真的不明白Composer如何使用最小稳定性设置.

我有两个包.让我们说吧,PackageAPackageB.

composer.json文件PackageA看起来像这样:

{
    "name": "vendor/packagea",
    "minimum-stability": "dev",
    "require": {
        "vendor/packageb": "dev"
    }
}
Run Code Online (Sandbox Code Playgroud)

所以PackageA需要PackageB.json PackageB看起来像这样:

{
    "name": "vendor/packageb",
    "minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud)

所以两者都说最小稳定性dev.所以我假设我这样做:

composer create-project vendor/packagea
Run Code Online (Sandbox Code Playgroud)

但随后它抱怨了这条消息:

[InvalidArgumentException]
Could not find package vendor/packagea with stability stable.
Run Code Online (Sandbox Code Playgroud)

我发现这很奇怪,因为我认为设置最小稳定性dev会将包从其"开发"分支中拉出来.在github的情况下总是如此dev-master.

所以我试着通过告诉作曲家使用什么分支来安装它:

composer create-project vendor/packagea testFolder dev-master
Run Code Online (Sandbox Code Playgroud)

但后来它抱怨它无法找到PackageB:

Installing dependencies (including require-dev)
Your requirements could not be resolved to an installable set of …
Run Code Online (Sandbox Code Playgroud)

github composer-php packagist

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

获取进程的基址

我想访问某个进程的某个地址.但为此我需要首先获得该进程的基地址.我正在使用一种工具来判断我是否真的做得对.该工具显示我需要以下内容:"app.exe"+0x011F9B08 = 0x119F8300

我以为我可以获得进程的基地址OpenProcess(),但这给了我:0x0000005c结果.我不认为这是对的吗?至少,不是我需要的.

我认为我需要的基地址是: 0x119F8300 - 0x011F9B08 = 0x107FE7F8 <-- base?

这是我的代码:

hWindow = FindWindow(NULL, lpWindowName);
if(hWindow)
{
    GetWindowThreadProcessId(hWindow, &dwProcId);
    if(dwProcId != 0)
    {
            // hProcHandle -> 0x0000005c
            hProcHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcId);
    }
    else
    {
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得我打开过程的基地址?

c++ windows pointers

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

正则表达式分组与C++ 11正则表达式库匹配

我正在尝试使用正则表达式进行组匹配.我想从一个大字符串中提取两个字符串.

输入字符串看起来像这样:

t?B:Username!Username@Username.tcc.domain.com Connected
t?B:Username!Username@Username.tcc.domain.com WEBMSG #Username :this is a message
t?B:Username!Username@Username.tcc.domain.com Status: visible
Run Code Online (Sandbox Code Playgroud)

Username可以是任何东西.同样适用于最终部分this is a message.

我想要做的是提取英镑符号后面的用户名#.不是来自字符串中的任何其他位置,因为它可以变化.我还想从分号后面的字符串中获取消息:.

我尝试使用以下正则表达式.但它永远不会输出任何结果.

regex rgx("WEBMSG #([a-zA-Z0-9]) :(.*?)");
smatch matches;

for(size_t i=0; i<matches.size(); ++i) {
    cout << "MATCH: " << matches[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)

我没有得到任何比赛.我的正则表达式出了什么问题?

c++ regex linux c++11

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

Psr7 Http消息,为什么一成不变?

我正在研究PSR-7接口并思考如何实现它们的方法.

我也一直在阅读这篇博文.显然,实现PSR-7接口的对象必须是不可变的.

因此,如果我从那时实现该withProtocolVersion方法,MessageInterface它将看起来像这样:

public function withProtocolVersion($version)
{
    if ( $this->protocol === $version )
    {
        return $this;
    }

    $new = clone $this;
    $new->protocol = $version;
    return $new;
}
Run Code Online (Sandbox Code Playgroud)

我的问题确实是,为什么一成不变?为什么不简单地做一个return $this;

并不是我担心它分配的内存量,我真的没有看到保持它不可变的任何好处.

就像博客文章所说,当你这样做时:

$request = $request
    ->withMethod('POST')
    ->withUrl(new Url('http://example.org/')
    ->withHeader('Content-Type', 'text/plain');
Run Code Online (Sandbox Code Playgroud)

然后创建了四个副本,但最终结果$request与我简单使用时相同return $this,对吧?

为什么决定保持它不变.那为什么我要做一个clone $this?它有什么好处?

我并没有真正想到这个想法.

php psr-7

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

从 Blazor 中的页面组件调用 MainLayout 中的方法

我有一个带有MainLayout页面的 Blazor 应用程序,它@Body可以加载实际的页面内容。

在我的情况下Index.razor是在MainLayout页面内加载的。

有没有办法从位于父页面中的子页面(Index.razor)调用方法;MainLayout.razor?

例子:

MainLayout.razor

<div class="content">
<ul class="menu">
  <li>menu item 1</li>
</ul>

@Body

</div>

@code
{
    public async Task Test()
    {
        await JsRuntime.InvokeAsync<object>("console.log", "test parent");
    }
}
Run Code Online (Sandbox Code Playgroud)

Index.razor

<h1>This is the index page</h1>
<button @onclick="(async () => await btn_clicked())">Call parent method</button>

@code
{
    // Call method in MainLayout
    public async Task btn_clicked()
    {
        await parent.Test();
    }
}
Run Code Online (Sandbox Code Playgroud)

razor-pages blazor blazor-server-side

11
推荐指数
2
解决办法
3372
查看次数

在 IIS 中运行 Web 应用程序时,HttpContext 为 NULL

我有两个应用程序,都运行在同一台 Windows 机器上。一个应用程序是 IdentityServer4,另一个是我自己的 Web 应用程序(服务器端 Blazor 应用程序)。

这两个 Web 应用程序都是使用 .NET Core 3.1 构建的。

当我导航到我的 Web 应用程序时,我首先被重定向到我的 IdentityServer4 应用程序。我登录,然后我被重定向回我的网络应用程序。

登录成功,因为IdentitServer的日志没有错误。此外,我claim在 Blazor 网页上看到了某个值。我这显示claim通过CascadingAuthenticationState我的Blazor页。通过那条路径,一切正常。

但是,每当我尝试HttpContext在我的“代码隐藏”文件中获取登录用户时,我都会返回一个 Null 引用。例如:

public UserService(IHttpContextAccessor httpContextAccessor)
{
    // HttpClient is NULL...
    var httpCtx = _httpContextAccessor.HttpClient;  
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我在 Visual Studio 中本地运行我的应用程序时,一切正常。当我在 Visual Studio 中调试时,我看到HttpContext设置了我的所有用户数据。

但是,出于某种原因HttpContextNULL当我从 IIS 运行应用程序时。

我该如何解决这个问题?

iis asp.net-core identityserver4 blazor-server-side .net-core-3.1

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

从多维数组创建嵌套列表

我有一个PHP数组,看起来像这样:

array (
    [0] => array (
        [id] => 1
        [title] => "Title 1"
        [parent_id] => NULL
        [depth] => 0
    )
    [1] => array (
        [id] => 2
        [title] => "Title 2"
        [parent_id] => NULL
        [depth] => 0
    )
    [2] => array (
        [id] => 3
        [title] => "Title 3"
        [parent_id] => 2
        [depth] => 1
    )
    [3] => array (
        [id] => 4
        [title] => "Title 4"
        [parent_id] => 2
        [depth] => 1
    )
    [4] => array (
        [id] …
Run Code Online (Sandbox Code Playgroud)

php arrays

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

如果语句在转发器ItemTemplate中

我正在使用ASP.NET Repeater来显示一个内容<table>.它看起来像这样:

<table cellpadding="0" cellspacing="0">
    <asp:Repeater ID="checkboxList" runat="server" OnItemDataBound="OnCheckboxListItemBound">
        <ItemTemplate>
            <tr id="itemRow" runat="server">
                <td>
                    Some data
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我想if()在里面有一个声明,ItemTemplate所以我可以有条件地确定我是否要打印出一个<tr>标签.

所以我想要这样的东西:

<table cellpadding="0" cellspacing="0">
    <asp:Repeater ID="checkboxList" runat="server" OnItemDataBound="OnCheckboxListItemBound">
        <ItemTemplate>

            <% if ( (CurrentItemCount % 2) == 0 ) { %?>
            <tr id="itemRow" runat="server">
            <% } %>
                <td>
                    Some data
                </td>
            <% if ( (CurrentItemCount % 2) == 0 ) { %?>
            </tr>
            <% } %>
        </ItemTemplate>
    </asp:Repeater>
</table>
Run Code Online (Sandbox Code Playgroud)

有什么办法可以达到这个目的吗? …

c# asp.net repeater itemtemplate

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

发送SOAP请求,从哪里开始?

我需要向URL发送SOAP请求.但我发现这比我认为的更难.

我必须发送的请求是:

string bla = "" +
"<?xml version='\"1.0\" encoding=\"UTF-8\"?>" +
    "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
        "<soap:Body>" +
            "<ns1:sendNotificationResponse" +
              "xmlns=\"http://notification.services.adyen.com\"" +
              "xmlns:ns2=\"http://common.services.adyen.com\">" +
            "<notificationResponse>[accepted]</notificationResponse>" +
            "</sendNotificationResponse>" +
        "</soap:Body>" +
    "</soap:Envelope>";
Run Code Online (Sandbox Code Playgroud)

我收到了一个网址:https://ca-test.adyen.com/ca/services/Notification?wsdl

问题是,我不确定如何继续这里.我可以简单地向该URL发送请求吗?或者我必须先以某种方式导入WSDL?

我在网上发现了很多例子,但我对大多数例子都没有意义.有些人甚至过时了,因为他们仍在使用:Microsoft.Web.Services3

所以简而言之,我对我在这里必须做的事情以及如何做有点无能为力.我只是想发送'SOAP'消息......

.net c# soap

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