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

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

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

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

Q&A

解決済

2回答

6422閲覧

ASP.NET MVC5でラジオボタンの選択値を変更できない

psis

総合スコア15

ASP.NET

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

0グッド

0クリップ

投稿2017/05/18 06:59

編集2017/05/18 07:26

###前提・実現したいこと
ASP.NET MVC5でシステムを作成しています。
以下のソースのように
@Html.RadioButtonForでラジオボタンを生成。
初期表示で1(男)を選択し、ポスト時に2(女)を選択したいのですが
1(男)から変更されません。
選択されたラジボタンを変更するには何か一手間必要なのでしょうか?

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

html

1<label> 2@Html.RadioButtonFor(Function(model) model.Seibetu, 1) 34</label> 5<Label> 6@Html.RadioButtonFor(Function(model) model.Seibetu, 2) 78</Label>

●Controller

VB.Net

1Function Index() As ActionResult 2 3Dim model As New XXXXModel 4 5 model.Seibetu = 1 6 7 Return View(model) 8 9End Function 10 11<HttpPost> 12Function Index(model As XXXXModel) As ActionResult 13 14 Dim model As New XXXXModel 15 16 model.Seibetu = 2 17 18 Return View(model) 19 20End Function

###試したこと
初期表示で1(男)をセットせず、ラジオボタンを未選択状態にするとポスト時に選択することはできました。

###追記
同じようにポスト時にテキストボックスに値をセットしてみましたが変更できませんでした。
何かが根本的に間違っているようです・・・

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

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

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

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

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

guest

回答2

0

ベストアンサー

どのような操作をしているのか不明なのでハズレかもしれませんが、想像を膨らませると、たぶん、RadioButtonFor には POST された値がそのまま使われているからではないかと思います。

POST された値は ModelState ディクショナリ(model ではない)に格納されていて、Html Helper はまず ModelState ディクショナリを調べて、そこに値があればそれを表示するようになっています。

ポスト時にModelState.Clear()を呼んだら更新できました。

ModelState ディクショナリを Clear すること model から値を取ってくるので、そうなったのではないかと思います。

詳しいことは、EditorFor の例ですが、以下の記事を見てください。POST 要求を受けるアクションメソッドで model のプロパティを変えても表示が変わらないメカニズムは RadioButtonFor も同じだと思います。

EditorFor と DisplayFor の違い
http://surferonwww.info/BlogEngine/post/2013/03/27/editorfor-and-displayfor-display-different-values.aspx

投稿2017/05/18 07:55

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

psis

2017/05/18 09:35

回答頂きありがとうございます。 ModelState ディクショナリの存在を全く知らなかったのが問題でした。 記事のおかげでよくわかりました。
guest

0

ポスト時にModelState.Clear()を呼んだら更新できました。
詳しいことがわからないので調査中です。

投稿2017/05/18 07:33

psis

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問