我的问题很简单.我想知道将我ViewModels放在MVC应用程序中的哪个位置.
目前我正在处理的项目只有ViewModels,它们存储在Models文件夹中.在该文件夹中,我们直接创建ViewModel类.
但通常我也会有Model类,从数据库或其他东西获取数据.然后从Controller我'谈'到模型方法并将结果存储在ViewModel属性中.
但是当我使用它们时,我在哪里放置Model类和ViewModel类?在构建这两个文件/文件夹的意义上,什么是良好的做法?
我真的不明白Composer如何使用最小稳定性设置.
我有两个包.让我们说吧,PackageA和PackageB.
该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) 我想访问某个进程的某个地址.但为此我需要首先获得该进程的基地址.我正在使用一种工具来判断我是否真的做得对.该工具显示我需要以下内容:"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)
我怎样才能获得我打开过程的基地址?
我正在尝试使用正则表达式进行组匹配.我想从一个大字符串中提取两个字符串.
输入字符串看起来像这样:
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)
我没有得到任何比赛.我的正则表达式出了什么问题?
我正在研究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?它有什么好处?
我并没有真正想到这个想法.
我有一个带有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) 我有两个应用程序,都运行在同一台 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设置了我的所有用户数据。
但是,出于某种原因HttpContext,NULL当我从 IIS 运行应用程序时。
我该如何解决这个问题?
iis asp.net-core identityserver4 blazor-server-side .net-core-3.1
我有一个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) 我正在使用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)
有什么办法可以达到这个目的吗? …
我需要向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'消息......