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

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

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

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

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

Q&A

解決済

1回答

3682閲覧

asp.net MVC listboxのlistitemの値をif文で使いたい。

4u4me

総合スコア50

C#

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

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

0グッド

0クリップ

投稿2016/08/19 04:22

編集2016/08/19 08:18

asp.net MVCのControllerでviewにあるlistboxのlistitemの値を取得したいのですが、取得できません。

viewの値は
<asp:ListBox ID="list" runat="server">
<asp:ListItem Selected="True" value="+">+</asp:ListItem>
<asp:ListItem value="-">-</asp:ListItem>
<asp:ListItem value=""></asp:ListItem>
<asp:ListItem value="/">/</asp:ListItem>
</asp:ListBox>

上記の様になっておりました。

どなたかおわかりになる方、ご教授いただけないでしょうか?
###前提・実現したいこと
ここに質問したいことを詳細に書いてください
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード

Controller [AcceptVerbs(HttpVerbs.Post)] public ActionResult Clac(String number01, String number02,String[] list) { int x = int.Parse(number01); int y = int.Parse(number02); string lastValue = ""; if(list[0] == "+") { lastValue = (x + y).ToString(); } else if(list[1] == "-") { lastValue = (x - y).ToString(); } else if(list[2] == "*") { lastValue = (x * y).ToString(); } else if(list[3] == "/") { lastValue = (x / y).ToString(); } ViewData["msg"] = String.Format(lastValue); return View("Result"); } View <asp:ListBox ID="list" runat="server"> <asp:ListItem Selected="True" value="+">+</asp:ListItem> <asp:ListItem value="-">-</asp:ListItem> <asp:ListItem value="*">*</asp:ListItem> <asp:ListItem value="/">/</asp:ListItem> </asp:ListBox> の様にして、値を取得し、Result.aspxのViewの方で排出するのだと思います。 よろしくお願い申し上げます。

###試したこと
String[] listの様に引数を入れましたが、list[0]やlist[1]の方に値が入らないようです。おわかりになる方よろしくお願い申し上げます。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/08/19 05:39

関係のない テキストボックスを作成するところを掲載していることから、理解が足りなそうなため回答を(どこから説明すべきか)迷います。 そのテキストボックスに入力された値をどのように取得しているかは わかりますか?
4u4me

2016/08/19 06:23

少しコードを取ってきた場所が異なりますが、確か、 Controllerの [AcceptVerbs(HttpVerbs.Post)] public ActionResult Clac(String number01, String number02) { int x = int.Parse(number01); int y = int.Parse(number02);     string lastValue = "";     lastValue = (x + y).ToString();      ViewData["msg"] = String.Format(lastValue); return View("Result"); } の様にして、値を取得し、Result.aspxのViewの方で排出するのだと思います。 よろしくお願い申し上げます。
退会済みユーザー

退会済みユーザー

2016/08/19 06:44

viewにある listboxの名前は何になっていますか? 同じ方法ならば、同様に引数に同名の変数でいいとおもいます。 複数選択できるリストボックスならば string[] とか。
退会済みユーザー

退会済みユーザー

2016/08/19 09:18

複数選択しないlistboxなら(デフォルトでそうですが)[]の必要はないですね。回答にこちらで動いたもの載せますのでご確認ください。
guest

回答1

0

ベストアンサー

どこで引っかかっているのかわからないので、
サンプル作りましたので参考にしてください。

Default1Controller.cs

C#

1public ActionResult Index() 2{ 3 return View(); 4} 5 6[AcceptVerbs(HttpVerbs.Post)] 7public ActionResult Calc(String number01, String number02, String list) 8{ 9 int x = int.Parse(number01); 10 int y = int.Parse(number02); 11 12 string lastValue = ""; 13 14 if (list == "+") 15 { 16 lastValue = (x + y).ToString(); 17 } 18 else if (list == "-") 19 { 20 lastValue = (x - y).ToString(); 21 } 22 else if (list == "*") 23 { 24 lastValue = (x * y).ToString(); 25 } 26 else if (list == "/") 27 { 28 lastValue = (x / y).ToString(); 29 } 30 31 ViewData["msg"] = 32 String.Format(lastValue); 33 34 return View("Result"); 35 }

index.aspx

html

1 <form method="post" action="/Default1/Calc" runat="server"> 2 <asp:TextBox ID="number01" runat="server"></asp:TextBox> 3 <asp:ListBox ID="list" runat="server"> 4 <asp:ListItem Selected="True" Value="+">+</asp:ListItem> 5 <asp:ListItem Value="-">-</asp:ListItem> 6 <asp:ListItem Value="*">*</asp:ListItem> 7 <asp:ListItem Value="/">/</asp:ListItem> 8 </asp:ListBox> 9 <asp:TextBox ID="number02" runat="server"></asp:TextBox> 10 <asp:Button ID="Button1" runat="server" Text="Button" /> 11 </form>

Result.aspx

html

1<div> 2 Anser: <%:ViewData["msg"] %> 3</div>

投稿2016/08/19 09:14

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

4u4me

2016/08/22 00:19

String[] listをString listにlist[0]=="+"をlist=="+"としたら上手くいきました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問