私は非常に単純なモデルで奇妙な問題を抱えていました。コントローラーにポストバックされると、モデルは常にヌルでした。問題を見つけることができないので、モデルを再構築してアクセッサを追加しました。"State"という名前のモデルアクセサは、モデルをnullとしてポストするのはなぜですか?
私は最終的に「国家」と呼ばれる文字列アクセサを持つ、ビューでそれを使用して問題を引き起こしていたことを発見:
<%= Html.HiddenFor(m => m.State) %>
これはなぜ起こるのでしょうか?ここで
は、モデルである:ここでは
public class StudentSelectState
{
public string State { get; set; }
public int SelectedYear { get; set; }
public IDictionary<string, string> Years { get; set; }
}
はコントローラです:
[HttpGet]
public ActionResult SelectStudent()
{
var StudentYears = absenceServices.GetStudentYears();
var state = new StudentSelectState {Years = Lists.StudentYearListToDictionary(StudentYears)};
return View(state);
}
[HttpPost]
public ActionResult SelectStudent(StudentSelectState state)
{
var StudentYears = absenceServices.GetStudentYears();
state.Years = Lists.StudentYearListToDictionary(StudentYears);
return View(state);
}
、ここでは図である。
<% using (Html.BeginForm())
{%>
<%= Html.ValidationSummary() %>
<%= Html.TextBoxFor(m => m.State) %>
<%= Html.RadioButtonListFor(m => m.SelectedYear, Model.Years, "StudentYears") %>
<div style="clear: both;">
<input value="submit" />
</div>
<% } %>
RadioButtonListForは、私が移入するために書いたHtmlHelperのですRadioButtonLists
私はNinject 2.0を使用してコンストラクタにサービスを注入していますが、これはこの問題には関係していないと思います。
アクセサーの名前を変更することはできますが、なぜこれが起こっているのか不思議です。
こんにちはバーニー、 Modelが返されます(radiobuttonlistforヘルパーはラジオボタンリストから選択されたオプションにSelectedYearを設定します)。これが私がこの質問を投稿した理由です。 –