C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: asp.net mvc viewからmodelへ受け渡し


(過去ログ 177 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■101441 / inTopicNo.1)  asp.net mvc viewからmodelへ受け渡し
  
□投稿者/ 初# (1回)-(2023/02/25(Sat) 13:22:22)

分類:[.NET 全般] 

下記のようなモデルのリストにラジオボタンの値を格納したいと考えております。

public class AnswerModel
{
/// <summary>
/// シーケンスNo
/// </summary>
public List<string> RadioList { set; get; } = new List<string>();
}

ビューでは下記のようにラジオボタン3つのグループをモデルから生成しております。
<form action="/Answer" method="post">
@for (var i = 1; i < @Model.C_QuestionCDList.Count; i++)
{
//質問内容
<h4>@(i+1).@Model.C_QuestionNaiyoList[i]</h4>

<div class="radio">
<label class="radio-inline">
<input type="radio" name='radio@(i)' value="1" required /> はい
</label>
<label class="radio-inline">
<input type="radio" name='radio@(i)' value="2"> いいえ
</label>
<label class="radio-inline">
<input type="radio" name='radio@(i)' value="3"> 該当しない
</label>
</div>
<input class="btn btn-primary btn-lg fixed_btn" type="submit" value="送信" name="AnswerBtn" id="button">

</form>

1つだけならコントローラに引数として渡せば問題なかったのですが数が多くとなってきたときにモデルのリストにうまく格納するやり方がわからなかったのでご教示願えないでしょうか。

引用返信 編集キー/
■101448 / inTopicNo.2)  Re[1]: asp.net mvc viewからmodelへ受け渡し
□投稿者/ WebSurfer (2629回)-(2023/02/25(Sat) 14:12:55)
No101441 (初# さん) に返信

まず何はともあれ開発環境を書いてください。
(例: Windows 10 の Visual Studio 2022 で ASP.NET MVC5 アプリをターゲットフレーム
ワーク .NET Framework 4.8 で作っています・・・とか)

ターゲットフレームワークというのは、Visual Studio のソリューションエクスプローラー
でプロジェクト名を右クリックして出てくるメニューでプロパティを選んで表示すると
「対象のフレームワーク (またはターゲットフレームワーク)」という項目があるので、
それを見てください。

> @for (var i = 1; i < @Model.C_QuestionCDList.Count; i++)

Model.C_QuestionCDList.Count は不定ということですか?

引用返信 編集キー/
■101449 / inTopicNo.3)  Re[2]: asp.net mvc viewからmodelへ受け渡し
□投稿者/ 初# (4回)-(2023/02/25(Sat) 14:24:31)
No101448 (WebSurfer さん) に返信
早速のご回答有難うございます。
開発環境の旨を記載せずに大変失礼いたしました。
.NET Framework 4.7.2で開発しております。

>Model.C_QuestionCDList.Count は不定ということですか?
仰る通り不定となります。
アンケートフォームを作成しており、DBに質問一覧のテーブルを作成してそのレコード分の回答用ラジオボタンを作成している形となります。




引用返信 編集キー/
■101450 / inTopicNo.4)  Re[3]: asp.net mvc viewからmodelへ受け渡し
□投稿者/ WebSurfer (2630回)-(2023/02/25(Sat) 15:05:41)
No101449 (初# さん) に返信

コレクションのモデルバインディングがうまく行われるようにするには、レンダリングされ
る html 要素の name 属性が連番のインデックスを含むようにします。

具体的には、name="prefix[index].Property" というパターンにします。prefix の部分に
はアクションメソッドのパラメータ(仮引数)名が入ります。index は 0 から始まる連番
です。数字の連続が途切れた場合は解析が停止し、0 から途切れる前までのデータが返さ
れます。

ラジオボタンの例ではないですが、以下の記事が参考になると思います。

コレクションのデータアノテーション検証
http://surferonwww.info/BlogEngine/post/2014/09/01/validation-of-collection-data-during-model-binding-using-data-annotation.aspx

複数の CheckBox の状態を取得
http://surferonwww.info/BlogEngine/post/2017/07/02/obtain-posted-conditions-of-multiple-checkboxes-in-aspnet-mvc.aspx
引用返信 編集キー/
■101451 / inTopicNo.5)  Re[4]: asp.net mvc viewからmodelへ受け渡し
□投稿者/ 初# (5回)-(2023/02/25(Sat) 15:22:27)
No101450 (WebSurfer さん) に返信
>具体的には、name="prefix[index].Property" というパターンにします。
name="RadioList[@(i)].Propertyとすれば良いということですか?


引用返信 編集キー/
■101452 / inTopicNo.6)  Re[5]: asp.net mvc viewからmodelへ受け渡し
□投稿者/ WebSurfer (2631回)-(2023/02/25(Sat) 15:48:04)
No101451 (初# さん) に返信
> ■No101450 (WebSurfer さん) に返信
> >具体的には、name="prefix[index].Property" というパターンにします。
> name="RadioList[@(i)].Propertyとすれば良いということですか?

違いますね。紹介した記事をよく読んでください。
引用返信 編集キー/
■101453 / inTopicNo.7)  Re[6]: asp.net mvc viewからmodelへ受け渡し
□投稿者/ 初# (7回)-(2023/02/25(Sat) 17:56:35)
No101452 (WebSurfer さん) に返信
ラジオボタンのnameを下記のようにすることで
モデルに格納することができました。
name="C_Answer[@(i)]"

有難うございました。


解決済み
引用返信 編集キー/
■101454 / inTopicNo.8)  Re[7]: asp.net mvc viewからmodelへ受け渡し
□投稿者/ 初# (8回)-(2023/02/25(Sat) 17:58:13)
No101453 (初# さん) に返信
> ■No101452 (WebSurfer さん) に返信
> ラジオボタンのnameを下記のようにすることで
> モデルに格納することができました。
> name="RadioList[@(i)]"
でした。すみません
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -