テンプレートテスト
ブログの説明
ブログの説明2
menu
keyboard_arrow_up
Top
search
close
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
2019/12/11
image
NO IMAGE
[.NET Core] 同じインターフェイスで異なる実装を DI コンテナに登録し、区別して取り出す
update
event_note
label
.NET Core
label
ASP.NET Core
やり方はいろいろあるかもしれませんが、個人的に一番簡単だと思った方法です。
## 環境 - Visual Studio 2017 - .NET Core 2.2 ## 実体を区別しない場合 以下の過去記事を参考にしてください。 - [ASP.NET Core でコレクションを DI する方法](https://kuttsun.blogspot.com/2018/07/aspnet-core-di.html) 今回は DI した側で実体を区別したい場合です。 ## サンプル 例えば、以下のような `IFoo` を実装した複数のクラスがあったとします。 ```cs public class ServiceA : IFoo {} public class ServiceB : IFoo {} public class ServiceC : IFoo {} ``` これを、全て `IFoo` として登録しつつ、区別できるようにキーを付与します。 つまり、`Dictionary` として登録します。 ```cs services.AddSingleton
>(new Dictionary
() { [nameof(ServiceA)] = new ServiceA (), [nameof(ServiceB)] = new ServiceB (), [nameof(ServiceC)] = new ServiceC (), }); ``` DI される側では以下のようにして使います。 ```cs public Sample(IDictionary
services) { var service = services[nameof(ServiceA)]; } ```
## 参考 URL - https://tutorialmore.com/questions-536542.htm
Read more
2019/12/10
[Vue.js] チェックボックスを変更したときの処理を実装
update
event_note
label
Vue.js
Vue.js でチェックボックスを変更したときの処理の記述方法です。
```
``` ``` new Vue({ el: '#hoge', data: { isChecked: true, }, methods: { // チェックボックスの値が変更された changeCheckbox: function (event) { console.log('change checkbox: ' + this.isChecked); } } }); ```
## 参考 URL - https://jp.vuejs.org/v2/guide/forms.html#%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9
Read more
2019/12/09
[C#] 用途に応じた特殊文字のエスケープ・エンコード
update
event_note
label
C#
特殊文字はエスケープしたりエンコードしたりする必要がありますが、どの文字が特殊文字にあたるかは用途に応じて異なり、その用途に応じてエスケープやエンコードの方法やメソッドも変わってきます。
## 環境 - .NET Core 2.2 ## C# コード中のエスケープ ファイルパスなど表す場合、文字列中の `¥` をエスケープする必要がありますが、`@` を使えばエスケープが不要になります。 ```cs using System; public class Program { public static void Main() { var str = @"C:\path\hoge"; Console.WriteLine(str); } } ``` **実行結果** ``` C:\path\hoge ``` ## 正規表現で使用する文字をエスケープ 正規表現で使用される文字をエスケープしたい場合は `Regex.Escape` を使います。 半角スペースと `().*[]!#%$` の文字をエスケープしてくれます。 - https://docs.microsoft.com/ja-jp/dotnet/api/system.text.regularexpressions.regex.escape ```cs using System; using System.Text.RegularExpressions; public class Program { public static void Main() { var str = Regex.Escape("().*[]!#%$"); Console.WriteLine(str); } } ``` **実行結果** ``` \ \(\)\.\*\[]!\#%\$ ``` ## HTML で使用する文字をエンコード HTML で使用する `<` `>` `&` などの文字をエンコードしたい場合、`HttpUtility.HtmlEncode` を使用します。 - https://docs.microsoft.com/ja-jp/dotnet/api/system.web.httputility.htmlencode ```cs using System; using System.Web; public class Program { public static void Main() { var str = HttpUtility.HtmlEncode("<\">&'"); Console.WriteLine(str); } } ``` **実行結果** ``` <">&' ``` ## JavaScript で使用する文字をエンコード Razor を使っていると、C# で JavaScript のコードを出力することもあります。 このようなときは `HttpUtility.JavaScriptStringEncode` を使って `'` と `"` をエンコードできます。 - https://docs.microsoft.com/ja-jp/dotnet/api/system.web.httputility.javascriptstringencode ```cs using System; using System.Web; public class Program { public static void Main() { var str = HttpUtility.JavaScriptStringEncode("'"); Console.WriteLine(str); } } ``` **実行結果** ``` \u0027 ```
Read more
2019/12/06
[Vue.js] HTML の属性を変更する
update
event_note
label
Vue.js
Vue.js で HTML の属性を変更したい場合は `v-bind` を使用します。
以下、公式ドキュメントを自分なりにまとめなおしただけです。 - https://jp.vuejs.org/v2/guide/class-and-style.html ## 基本 例えば、`class` の値を変更したい場合は以下のように記述します。 ```
``` ``` data: { status: 'active', } ``` **展開後** ```
``` ## 条件指定(オブジェクト構文) 属性の出力を条件分岐させたい場合、以下のようなオブジェクト構文を使用します。 ```
``` ``` data: { isActive: true, } ``` `active` クラスの出力は、`data` プロパティの `isActive` の値によって決まります。 `{出力したい属性: 条件式}` です。 **展開後** `isActive` が `true` の場合 ```
``` `isActive` が `false` の場合 ```
``` ### 属性値がハイフンを含む場合 注意点として、クラスの属性値がハイフン `-` を含む場合は、シングルコーテーション `'` で括る必要があるようです。 ```
``` ``` data: { isActive: true, } ``` ### オブジェクトとのバインド 上記はインラインでバインドを記述していますが、以下のように記述することもできます。 ```
``` ``` data: { classObject: { active: true, 'text-danger': true } } ``` **展開後** ```
``` ### computed プロパティとのバインド 条件は `data` プロパティ以外に、`computed` プロパティとバインドすることもできます。 ```
``` ``` data: { isActive: true, error: null }, computed: { classObject: function () { return { active: this.isActive && !this.error, 'text-danger': this.error && this.error.type === 'fatal' } } } ``` **展開後** ```
``` ## 静的フィールドとの共存 既に静的に `class` が記述してあっても、Vue.js の `v-bind` と共存できます。 ```
``` ``` data: { status: 'active', } ``` **展開後** ```
``` ## 配列構文 配列を渡してクラスのリストを適用することもできます。 ```
``` ``` data: { activeClass: 'active', errorClass: 'text-danger' } ``` **展開後** ```
```
## 参考 URL - https://jp.vuejs.org/v2/guide/class-and-style.html - https://noumenon-th.net/programming/2019/05/21/v-bind/
Read more
2019/12/05
[Vue.js] click イベントの記述
update
event_note
label
Vue.js
イベントのサブスクライブとイベントハンドラの記述を行う場合は、`v-on` を使用します。
例えば以下のように記述します。 ```
{{count}}
Increment
``` ``` new Vue({ el: '#app', data: { count: 0 }, // `methods` オブジェクトの下にメソッドを定義する methods: { increment: function () { this.count++; } } }); ``` `v-on:click` でクリック時のイベントハンドラを指定します。 イベントハンドラ `increment` は `methods` プロパティの下に定義します。 `this` で `data` プロパティにアクセスできます。 ## 引数の渡し方 引数も普通に渡せばいいだけです。 ```
{{count}}
Increment
``` ``` new Vue({ el: '#app', data: { count: 0 }, // `methods` オブジェクトの下にメソッドを定義する methods: { increment: function (value) { this.count += value; } } }); ``` ## イベント引数 引数なしのイベントハンドラに引数を1つ指定すると、イベント引数が渡されます。 ```
Hello World
``` ``` new Vue({ el: '#app', // `methods` オブジェクトの下にメソッドを定義する methods: { helloWorld: function (event) { alert('Hello World!') // `event` は、ネイティブ DOM イベントです if (event) { alert(event.target.tagName) } } } }); ``` ### 引数ありのイベントハンドラでイベント引数を受け取る 引数ありのイベントハンドラでイベント引数を受け取りたい場合は、`$event` を渡します。 ```
Hello World
``` ``` new Vue({ el: '#app', // `methods` オブジェクトの下にメソッドを定義する methods: { helloWorld: function (name, event) { alert(`Hello ${name}!`) // `event` は、ネイティブ DOM イベントです if (event) { alert(event.target.tagName) } } } }); ```
## 参考 URL - https://jp.vuejs.org/v2/guide/events.html - https://noumenon-th.net/programming/2019/05/21/v-bind/ - https://qiita.com/rhistoba/items/f7f90b7e59ad0a12e729
Read more
[Vue.js] とにかく簡単に試してみたい
update
event_note
label
Vue.js
環境構築など面倒なことはやらずに、とにかく Vue.js を簡単に試してみたい場合の方法です。
必要なのはテキストエディタとブラウザ、あとはインターネットに接続できれば OK です。 `npm` などのパッケージ管理ツールは使いません。 まずは新規にテキストファイルを作成し、以下を記述して保存します。 ```
``` 保存したファイルをブラウザで開き、`Hello World!` と表示されれば OK です。 ここでは Vue.js を jsdelivr から読み込んでいますが、読み込む CDN サーバーやバージョンなどは必要に応じて変更してください。
## 参考 URL - https://team-lab.github.io/skillup-nodejs/vuejs.html
Read more
2019/12/03
image
NO IMAGE
ASP.NET Core の RedirectToAction でデータを保持する
update
event_note
label
ASP.NET Core
ASP.NET Core のアクションメソッドで、`RedirectToAction` でリダイレクトした時にデータを保持する方法です。
この場合、データを保持するには `TempData` を使います。 ## 環境 - Visual Studio 2017 - ASP.NET Core 2.2 ## 前提 `TempData` を使うためにはセッションの設定を行っておく必要があります。 - https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/app-state?view=aspnetcore-3.0 ## サンプル ```cs public IActionResult Index() { ViewData["key"] = TempData["key"]; return View(); } public IActionResult Foo() { TempData["key"] = "Sample data"; return RedirectToAction(nameof(Index)); } ```
## 参考 URL - https://stackoverflow.com/questions/1226329/keep-viewdata-on-redirecttoaction - https://codeday.me/jp/qa/20190323/460922.html
Read more
新しい投稿
前の投稿
ホーム
Translate
Popular Posts
ASP.NET Core で AdminLTE を使用する
TortoiseGit でコミットメッセージを変更する
TortoiseGit でリモートリポジトリのタグを削除する
image
NO IMAGE
ASP.NET Core におけるフロントエンドのパッケージ管理
image
NO IMAGE
C# と C/C++ のライブラリを混在させる場合の構成
image
NO IMAGE
[C#] Dictionary の キーがタプルの場合に JSON へのシリアライズとデシリアライズを行う方法
image
NO IMAGE
TortoiseGit でブランチ間の差分を見る
image
NO IMAGE
ASP.NET Core (.NET Core) でバックグランドタスクを起動する
image
NO IMAGE
.NET アプリケーションを XCOPY 配置で配布する
image
NO IMAGE
TestLink で LDAP 認証を行う
Labels
.NET Core
31
.NET Framework
17
.NET Standard
2
AdminLTE
1
Apache
3
AppVeyor
2
AsciiDoc
3
ASP.NET Core
55
Atom
4
AWS
2
AWS Cloud9
4
blockdiag
1
Blogger
10
Bootstrap
3
C/C++
6
C#
106
CentOS
3
Chrome
1
Chronograf
3
Codecov
1
CSS
1
Docker
28
DokuWiki
4
Doxygen
1
draw.io
1
Electron.NET
2
Entity Framework Core
9
Excel
2
FFmpeg
2
Firefox
5
Git
12
GitBook
4
GitBucket
7
GitHub
7
GitLab
30
Go
1
Google
1
Google Cloud Platform
1
Grafana
5
HTML
5
IIS
8
InfluxDB
6
JavaScript
7
Jenkins
7
Linux
25
Log4View
1
MahApps.Metro
3
MaterialDesignInXamlToolkit
1
MVC
1
MVVM
6
NLog
3
Node.js
3
npm
1
OpenSSL
3
ownCloud
2
Pine Script
1
PlantUML
5
PowerShell
7
Prism
2
Python
11
Razor
3
Redmine
30
remark.js
2
rocketchat
4
Ruby
3
SignalR
1
Socket.IO
1
SonarQube
5
Sphinx
10
SQL Server
5
SQLite
1
t
1
TestLink
2
Tomcat
2
TortoiseGit
10
TortoiseSVN
2
Trading View
1
Travis CI
1
Ubuntu
13
Visual Studio
39
Visual Studio Code
9
Vue.js
8
Windows
56
Windows 10
4
Windows ADK
1
Windows API
2
Windows Embedded
4
wkhtmltopdf
2
Word
3
WPF
12
WSL
1
Xamarin
1
xUnit
5
アプリケーション
1
デザインパターン
1
テスト
3
バッチファイル
2
ぴよ
3
プログラミング
3
ライセンス
1
ラベル
3
ラベル1
2
英語
2
雑記
1
書籍
1
数学
1
正規表現
1
Blog Archive
▼
2022
(1)
▼
2月
(1)
例えばボタンをクリックしたときに重い処理を実行する場合など、そのまま処理すると GUI が固まって...
►
2021
(24)
►
5月
(7)
►
4月
(8)
►
3月
(2)
►
2月
(2)
►
1月
(5)
►
2020
(60)
►
12月
(1)
►
11月
(3)
►
10月
(3)
►
9月
(3)
►
8月
(3)
►
7月
(7)
►
6月
(7)
►
5月
(2)
►
4月
(6)
►
3月
(6)
►
2月
(7)
►
1月
(12)
►
2019
(92)
►
12月
(13)
►
11月
(9)
►
10月
(3)
►
9月
(2)
►
8月
(3)
►
7月
(5)
►
6月
(11)
►
5月
(6)
►
4月
(17)
►
3月
(9)
►
2月
(6)
►
1月
(8)
►
2018
(100)
►
12月
(1)
►
11月
(11)
►
10月
(8)
►
9月
(6)
►
8月
(10)
►
7月
(10)
►
6月
(8)
►
5月
(9)
►
4月
(8)
►
3月
(14)
►
2月
(4)
►
1月
(11)
►
2017
(117)
►
12月
(14)
►
11月
(20)
►
10月
(17)
►
9月
(19)
►
8月
(10)
►
7月
(8)
►
6月
(3)
►
5月
(6)
►
4月
(5)
►
3月
(2)
►
2月
(8)
►
1月
(5)
►
2016
(91)
►
12月
(5)
►
11月
(9)
►
10月
(11)
►
9月
(9)
►
8月
(6)
►
7月
(14)
►
6月
(14)
►
5月
(11)
►
4月
(10)
►
3月
(2)
►
2015
(23)
►
12月
(4)
►
11月
(2)
►
10月
(8)
►
9月
(8)
►
7月
(1)
►
2013
(3)
►
11月
(1)
►
9月
(1)
►
7月
(1)
►
2012
(2)
►
7月
(1)
►
6月
(1)
►
2011
(1)
►
9月
(1)
►
2009
(1)
►
7月
(1)
►
2008
(2)
►
11月
(1)
►
7月
(1)
►
2007
(3)
►
10月
(3)