質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

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

ASP.NET

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

Q&A

1回答

2952閲覧

Visualstudio2015 asp.net mvc 出力内容を別のテキストボックスに出力

SasakiRika

総合スコア6

C#

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

ASP.NET

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

0グッド

1クリップ

投稿2018/09/05 12:17

編集2022/01/12 10:55

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
Visualstudio2015 asp.net mvcでプログラムを作成してました。2つのテキストボックス(A、Bとする)とボタンを準備します。
①テキストボックスAに文字を入力
②ボタンを押すことで入力された文字がテキストファイルに出力される。
さらに、出力したテキストファイルの文字を読み込みテキストボックスBに出力する。
現在①、②まで完全にできておりますが、最後のファイルから読み込み出力する仕方がよく分かりません。様々なサイトに記載されている出力のやり方を参照しましたが、わかりませんでした。アドバイスや意見お願いいたします。C#初心者です。

該当のソースコード

//無駄に何か多いかもしれません

HelloController.cs

1using.System; 2using.System.Collection.Genelic; 3using.System.ComponentModel; 4using.System.Data; 5using.System.Drawing; 6using.System.Linq; 7using.System.Web; 8using.System.Web.Mvc; 9using.System.Text; 10using.System.IO; 11 12namespace Mvc.App.Controllers 13{ 14public class HelloController : Controller 15{ 16//GET: DefaultController 17public ActionResult Index() 18{ 19return View(); 20} 21[HttpPost] 22public ActionResult Send(string value1) 23{ 24ViewData["PostData"] = value1; 25 26//テキストファイルに出力処理 27string moji = value1; 28System.IO.StreamWriter sw = new System.IO.StreamWriter( 29@"C:\test\text0.txt", 30false, 31System.Text.Encoding.GetEncoding("shift_jis")); 32sw.Write(moji); 33sw.Close; 34return View(); 35} 36} 37} 38

Index.cshtml

1 2@{ 3 Layout = null; 4} 5 6<!DOCTYPE html> 7 8<html> 9<head> 10 <meta name="viewport" content="width=device-width" /> 11 <title>入出力</title> 12</head> 13<body> 14 <div> 15 @using (Html.BeginForm( 16          "Send", 17 "Hello", 18 null, 19 FormMethod.Post, 20 new [ enctype = "multipart/form-data" ] 21 22)) 23 { 24 @Html.TextBox("value1",ViewData["PostData"]) 25 <br /> 26 <input type="submit" value="送信"> 27      <br /> 28      @Html.TextBox("value2","") 29        30 } 31 </div> 32</body> 33</html>

Send.cshtml

1` 2 3@{ 4 Layout = null; 5} 6 7<!DOCTYPE html> 8 9<html> 10<head> 11 <meta name="viewport" content="width=device-width" /> 12 <title>Send</title> 13</head> 14<body> 15 <div> 16 @Html.TextBox("value2","") 17 <br /> 18 <input type="submit" value="送信"> 19      <br /> 20      @Html.TextBox("value2","") 21 22 </div> 23</body> 24</html> 25

補足情報(FW/ツールのバージョンなど)

Visualstudio2015 asp.net mvcasp.net
OS windows10
うまく説明できないので下記のサイトを参考にしセットアップ行いました。
https://qiita.com/sasagin/items/b5f77977ff2dd4412d01

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/09/06 00:43

コードは ``` と ``` で囲ってください。インデントされて見やすくなるので。(見てもらえる努力をしましょう)
退会済みユーザー

退会済みユーザー

2018/09/06 00:45

開発環境(OS, .NET のバージョン、プロジェクト作成に使ったテンプレート、IIS Express かローカル IIS か・・・など)、を書いてください。特に、.NET のバージョンとテンプレートの情報が重要。
退会済みユーザー

退会済みユーザー

2018/09/06 02:05

コードを拝見しましたが、どういう手順で何をしたいのか読めませんでした。質問者さんご自身がよく分からないまま書いたように見えますが、違います? やりたいことの手順を、ステップバイステップで、箇条書きにしていただけませんか?
退会済みユーザー

退会済みユーザー

2018/09/06 07:04 編集

> ③がよく分かりません。 ←何が分からないか、ここに書いてあること以外は知り得ない第三者が読んで分かるように書いてください。② までできているということですが、そこまでは質問者さんのやりたいことが、テキストファイルの書き換えも含めて、完全にできているということで間違いないですか?
guest

回答1

0

①、② のためのコードとしては変なところや突っ込みどころが多々ありますが(正直言ってメチャクチャな感じでホントに動いているのか疑わしいですが)、それはとりあえず置いといて、質問者さんの現時点での課題:

出力したテキストファイルの文字を読み込みテキストボックスBに出力する。

・・・についてのみ回答します。

送信されてきた文字列を Hello/Send アクションメソッドで受けてそれをテキストファイルに書き込むところまでは「完全にできております」ということでいいのですよね。

であれば、Hello/Send アクションメソッドで、テキストファイルに書き込む処置に続けて、(1) 同じテキストファイルから読み出し、(2) 読み出した文字列を ViewData に格納し、(3) それを View で @Html.TextBox の第二引数に渡してやれば望むことはできるはずです。

(1) は問題なくできますよね? StreamWriter で書き込むコードが書けたのですから。分からなければ以下の記事を見てください。サンプルコードもあります。

StreamReader.ReadToEnd メソッド
https://msdn.microsoft.com/ja-jp/library/system.io.streamreader.readtoend(v=vs.110).aspx

(2) は、質問者さんが書いたコード ViewData["PostData"] = value1; と同様に、例えば value2 が上記 (1) で読み出した文字列とすると ViewData["SavedData"] = value2; のようにするということです。

(3) は「テキストボックスB」用の TextBox を @Html.TextBox("value2", ViewData["SavedData"]) のようにすれば良いはずです。(「テキストボックスA」用は @Html.TextBox("value1", ViewData["PostData"]) に変更した方がよさそうです)

投稿2018/09/07 02:17

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問