🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

Q&A

解決済

1回答

2336閲覧

Visual Studioのアプリケーションの設定、スコープについて

asus2

総合スコア22

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

0グッド

0クリップ

投稿2019/11/07 10:43

編集2019/11/08 02:59

お世話になります。

Visual Studio2015 で ASP.NET MVC5 のアプリケーションを作成しています。

アプリケーション内で使用する文字列をアプリケーションの設定に格納しています。

文字列は50文字程度の文字列5つ、ユーザーが入力するメモ程度のもので値は帳票に出力します。
使用方法は帳票出力前の画面でメモを入力し、入力内容は「どこか」に保存。次回帳票出力時に前回の入力内容を表示します。(内容は編集可能)

ユーザーが自由に書き換えられる値なので、
スコープをアプリケーションからユーザーに変更したいのですが、できませんでした。

以前Visual Studio2017 で WindowsForm のアプリケーションを作成した際には
スコープをユーザーにし、アプリケーション内で書き換えることができましたが、
ASP.NET MVC5ではできないのでしょうか。

具体的な情報が見当たらずご存じの方がいらっしゃいましたらご教示いただけないでしょうか。
よろしくお願いいたします。

フレームワークは.NET Framework 4.7.1です。

やってみたこと

①プロジェクト → プロパティ → 設定から追加(スコープが変更できない。)
②Web.config直接書き換えてみる(以下を追加、エラーはでないが追加されない)

config

1 <userSettings> 2 <CS1.Properties.Settings> 3 <setting name="Text" serializeAs="String"> 4 <value>こんにちは。</value> 5 </setting> 6 </CS1.Properties.Settings> 7 </userSettings>

SurferOnWwwさんへの追記

Settings.settings ファイルのことですか? それは、Web Forms にも MVC にもないはずで、そもそも存在しないのに「スコープをアプリケーションからユーザーに変更したい」とかできないと思うのですが?

Settings.settingsではありません。
私の言うアプリケーションの設定とはVS2017で作成したWindowsFormではApp.configです。
1枚目の画像のようにGUIから編集ができます。「プロジェクト → プロパティ → 設定」
スコープはセレクトボックスで「アプリケーション」「ユーザー」から選択できます。
App.configにはここで入力した内容が格納されます。

イメージ説明
イメージ説明

値は下記のような記述で書き換え・取得が可能です。

C#

1Properties.Settings.Default.test_apli = "スコープがアプリケーションの値を書き換える"; 2Properties.Settings.Default.Save(); 3 4var test_apli_val = Properties.Settings.Default.test_apli; 5// test_apli_valには"スコープがアプリケーションの値を書き換える"が入る

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/07 14:28 編集

Settings.settings ファイルのことですか? それは、Web Forms にも MVC にもないはずで、そもそも存在しないのに「スコープをアプリケーションからユーザーに変更したい」とかできないと思うのですが? 読み取り専用なら web.config の appSettings に設定可能ですが、ユーザーが書き換えられるようにしたいということですと、それは使えません。 どういう目的に使用したいのか詳しく書いてもらえませんか?
asus2

2019/11/08 00:05

>>Settings.settings ファイルのことですか? それは、Web Forms にも MVC にもないはずで、そもそも存在しないのに「スコープをアプリケーションからユーザーに変更したい」とかできないと思うのですが? についての返信を、画像を使用したかったので質問文のほうへ追記しました。 webformsではこういったことができたのでDBを使用せずに、 ユーザーが入力した内容(ちょっとしたメモ程度の内容)を保持しておくために使用する予定でした。 手軽でとてもよかったのですが読み取り専用でしかできないのであればおとなしくDBに格納したいと思います。
退会済みユーザー

退会済みユーザー

2019/11/08 00:22

質問に追加した画像は Settings.settings ファイルのもののようです。ソリューションエクスプローラの Properties フォルダを開いてみてください。そこにあると思います。MVC アプリでは使えません (存在しません)。 ASP.NET でユーザー固有の情報を保持するのに「プロファイル」というものがあります・・・が、それが質問者さんの目的に合うものかどうかは今提供されている情報だけでは分かりません。 それはどのような情報で、どのように使うのかを具体的に例を挙げて説明してもらえると案が出せると思います。
asus2

2019/11/08 00:45

>>MVC アプリでは使えません (存在しません)。 MVCではデフォルトの状態ではSetting,setteingsファイルは存在しませんが、 上部メニューのプロジェクト→プロパティ→設定→このプロジェクトには~…のリンクをクリックするとSetting.settingsファイルが作成されます。 質問文の中で<userSettings>~からはじまる設定を追加したのはここです。 プロファイルはASP.NET2.0限定のようです。 情報は50文字程度の文字列5つ、ユーザーが入力するメモ程度のもので値は帳票に出力します。 使用方法は帳票出力前の画面でメモを入力し、入力内容は「どこか」に保存。 次回帳票出力時に前回の入力内容を表示します。(内容は編集可能)
asus2

2019/11/08 00:47

>>プロファイルはASP.NET2.0限定のようです。 コア部分が同じなので新しいバージョンでも使えますね、すいません。
退会済みユーザー

退会済みユーザー

2019/11/08 01:29 編集

> 上部メニューのプロジェクト→プロパティ→設定→このプロジェクトには~…のリンクをクリックするとSetting.settingsファイルが作成されます。 なるほど、初めて知りました。スコープを「ユーザー」にできないのは Web アプリだからという事情があるようです。そのあたりのことと代案を別途回答欄に書いておきます。
退会済みユーザー

退会済みユーザー

2019/11/08 02:27

コメント欄に書かれた、 情報は50文字程度の文字列5つ、ユーザーが入力するメモ程度のもので値は帳票に出力します。 使用方法は帳票出力前の画面でメモを入力し、入力内容は「どこか」に保存。 次回帳票出力時に前回の入力内容を表示します。(内容は編集可能) 。。。は質問欄を編集して追記お願いします。重要な情報ですし、コメント欄は開かないと読めないので読まない人もいますので。
guest

回答1

0

ベストアンサー

情報は50文字程度の文字列5つ、ユーザーが入力するメモ程度のもので値は帳票に出力します。
使用方法は帳票出力前の画面でメモを入力し、入力内容は「どこか」に保存。次回帳票出力時に前回の入力内容を表示します。(内容は編集可能)

「帳票出力前の画面でメモを入力」してから「次回帳票出力時」まで保持できれば良い一時的なデータであれば Session を使ってはいかがですか?

MVC には TempData ディクショナリという Session のラッパーがあります。Post-Redirect-Get パターンで、現在のリクエストと次のリダイレクトという 2 つのリクエストの間だけ情報を保持できれば良いのであれば TempData の利用が第一の選択肢に含まれると思います。Session と違って自動的に削除されるというメリットがありますので。

他に ASP.NET が使う状態管理(以下の記事を参照)の中で今回の目的に使えそうなものは Cookie がありそうです。

ASP.NET の状態管理の概要
https://msdn.microsoft.com/ja-jp/windows/apps/75x4ha6s(v=vs.94)

ASP.NET の状態管理に関する推奨事項
https://msdn.microsoft.com/ja-jp/windows/apps/z1hkazw7(v=vs.94)

MVC でも ASP.NET Identity ベースのプロファイルが使えます(下の記事参照)。

ASP.NET Identityのプロファイル情報のカスタマイズ
https://codezine.jp/article/detail/7845

だた、今回の目的にはプロファイルは合わないように思います。Cookie が使えそうな感じですが、それよりも Session(または TempData)がよさそうだと思います。

最後に、Settings.settings の話ですが、質問のコメント欄にも書きましたように、スコープを「ユーザー」にできないのは Web アプリだからという事情があるようです。

Windows Forms や WPF アプリなどでスコープを「ユーザー」にした場合、構成ファイルは当然ユーザー別に作成されないとダメです。どこに作られるかと言うと、

C:\Users<ユーザー名>\AppData\Local<アプリケーション名>

というフォルダで、そこに user.config という名前で保存されます。詳しくは以下の記事を見てください。

構成ファイルの保存場所
http://surferonwww.info/BlogEngine/post/2019/09/01/where-are-configuration-files.aspx

Web アプリでそういうことはできないので、スコープを「ユーザー」にはできないということだと思います。

投稿2019/11/08 02:11

編集2019/11/08 02:14
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asus2

2019/11/08 02:57

ご回答ありがとうございました。 今回は長時間データを保持したいのでsessionを使用したいと思います。 TempDataのことを知らず、開発着手前に知っていれば使える場面はいろいろあったのに…と悔しい思いをしています。 スコープがユーザーに変更できない理由についても詳しく解説いただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問