デフォルト値の 0 が、開発中の Surveys アプリに忍び寄っていますが、理由はわかりません。問題は次のとおりです。
ユーザーがアンケートの質問に回答するために選択できる値を表す Html.RadioButtons のグループがあります (1 == まったくない、2 == 少し、3 == 多くある)。各質問への回答を格納するために、null を許可しない tinyint データ型を使用しました。
ビューのコードは次のようになります。
<ol class="SurveyQuestions">
<% foreach (SurveyQuestion question in Model.Questions)
{
string col = question.QuestionColumn;
%>
<li><%=question.QuestionText%>
<ul style="float:right;" class="MultiChoice">
<li><%= Html.RadioButton(col, "1")%></li>
<li><%= Html.RadioButton(col, "2")%></li>
<li><%= Html.RadioButton(col, "3")%></li>
</ul>
<%= Html.ValidationMessage(col, "*") %>
</li>
<% } %>
</ol>
[上記のコードに関する注意:]
各アンケートには約 70 の質問があるため、質問のテキストを 1 つのテーブルに配置し、結果を別のテーブルに保存しました。質問をフォーム ビュー モデルに入れました (したがって、Model.Questions)。質問テーブルには、上に示すように、回答テーブルの列を質問にリンクできる QuestionColumn というフィールドがあります (<%= Html.RadioButton(col, "1")%> など)。
[/ノート]
ただし、ユーザーが質問に答えない場合、値 0 がデータベース列に挿入されます。ユーザーがラジオボタンを選択しない場合、Null が期待されます。
その結果、期待どおりの結果が得られません。つまり、null 値 (ユーザー入力なし) による検証エラーです。
Answers テーブルのフィールドのデフォルト値を 0 と規定したことはありません。
それで、何が起こっているのですか?何か案は?