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

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

新規登録して質問してみよう
ただいま回答率
85.48%
ASP.NET MVC Framework

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

Q&A

解決済

1回答

14120閲覧

[ASP.NET]画面遷移(オブジェクト付き)の方法がわかりません。

Hisaro

総合スコア7

ASP.NET MVC Framework

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

0グッド

0クリップ

投稿2017/03/03 05:26

###前提・実現したいこと
ASP.NETのMVCで開発を行っています。

1.View/Home/Index.cshtmlのボタンクリック
※ここでJavaScriptオブジェクトを作成
↓ ○
2.Controller/Homecontoroller.cs
※1.のオブジェクトは取得できてます。
↓ ×
3.Controller/Testcontroller.cs

4.View/Test/Test.cshtmlを表示

上記のような流れで作成したいのですが、うまくできません。
現状は、2.Controller/Homecontoroller.csまで呼び出せているのですが、
RedirectToActionか、RedirectToRouteを使用したいと思うのですが、
ネットで検索してもわからず、どの様に記述すれば良いか分からず質問させて頂きました。

ご教授お願い致しますm(_ _)m

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

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

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

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

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

guest

回答1

0

ベストアンサー

上記のような流れで作成したいのですが、うまくできません。

うまくできませんだけでは何がどううまくいかないのか分かりません。

質問者さんが○○〇を期待して、△△△を試したが、結果は×××となってしまって、期待したこととは□□□が異なる・・・というような情報を提供できないですか?

・・・と注文を付けるばかりでは何ですので、想像を膨らませてみましたが、以下のようなことですか?

1 で作成して 2 に渡した「JavaScriptオブジェクト」を 3 に渡したいが、3 で取得することができない。

そういう場合は、ASP.NET では Session を使います。MVC にはそのスマートラッパーとして TempData ディクショナリというのがありますので、それを使う方が少し効率的です。

詳しくは以下の記事の「アクション メソッド間での状態の受け渡し」のセクションを見てください。

ASP.NET MVC アプリケーションでのデータの受け渡し
https://msdn.microsoft.com/ja-jp/library/dd394711(v=vs.100).aspx

私の想像がハズレの場合は、質問者さんが○○〇を期待して、△△△を試したが、結果は×××となってしまって、期待したこととは□□□が異なる・・・というような情報を提供してください。

*********** 追記 ***********

2017/03/03 18:32 の私のコメントで「詳しいことは後で回答欄に追記します」と書きましたが、それを以下に書きます。

質問者さんはチュートリアルなどを参考に CRUD 操作ができるサンプルを作ったことがありますか?

もしなければ、たとえば、以下のチュートリアルに従って作ってみてください。DB First で EDM を作って、それをベースに Visual Studio のスキャフォールディング機能を使うと、自分では一行もコードを書かなくても、CRUD 操作に必要な Controller と View のソースコードが一式自動生成されます。

10 行でズバリ!! ASP.NET MVC を構成する各コンポーネントとネーミング ルール (C#)
https://code.msdn.microsoft.com/10-ASPNET-MVC-C-8566eeb5/

例えば、Controller は以下のようになります(一部のみアップしています)。それに対応する View のコードも自動生成されます。

using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Linq; using System.Web; using System.Web.Mvc; using AdventureWorksLT; namespace Mvc4App.Controllers { public class Address2Controller : Controller { private AdventureWorksLT_DataEntities db = new AdventureWorksLT_DataEntities(); // ・・・中略・・・ // // GET: /Address2/Create public ActionResult Create() { return View(); } // // POST: /Address2/Create [HttpPost] public ActionResult Create(Address address) { if (ModelState.IsValid) { db.Address.AddObject(address); db.SaveChanges(); return RedirectToAction("Index"); } return View(address); } } }

これが基本です。

たぶん、質問者さんは、上の例で言うと return RedirectToAction("Index"); のところで無理やり(?)「JavaScriptオブジェクト」を渡そうとしておかしな結果になっているのではないかと思います。

「JavaScriptオブジェクト」は上の回答で書いたように TempData を使って渡してください。基本を守ればうまくいくはずです。

投稿2017/03/03 05:52

編集2017/03/03 10:02
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Hisaro

2017/03/03 06:56

ご回答ありがとうございます。 まず質問する情報不足で大変申し訳ございませんでしたm(_ _;)m <できないこと> 2 → 3のアクションメソッド間で移動するところができず、 2のコントローラーのアクションメソッドから3に移動せずに 1が再表示されてしまう状態です。 <試したこと> 2のアクションメソッドに"return RedirectToAction(”アクションメソッド名", "コントローラー名", object);"で記述しております。 デバッグすると2→3へ移動せずに、2が終了してIndex.cshtmlが表示されてしまいます。 うまく質問できなくて申し訳ございません...(T_T) 教えて頂いたURLの方もやってみます!
退会済みユーザー

退会済みユーザー

2017/03/03 09:32

データの受け渡し以前のごく基本的なとことで躓いていたようですね。 一度、Microsoft のチュートリアルなどを参考に、Visual Studio のウィザードを利用してアプリを作ってみてはいかが? 詳しいことは後で回答欄に追記します。
Hisaro

2017/03/04 07:05

作り直してみたころ簡単にいけましたw ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問