私は昨日尋ねたその類似の質問hereを少し修正しました。ここでさらに別のモデルバインディングの問題
は、上記のビューは以下のようにShowInfo.cshtmlに使用されている
@model MyTestApp.Models.NameModel
@Html.DropDownListFor(m => m.Title, Model.Titles, Model.Titles)
<br />
@Html.LabelFor(m => m.LastName)
@Html.TextBoxFor(m => m.LastName)
<br />
@Html.LabelFor(m => m.FirstName)
@Html.TextBoxFor(m => m.FirstName)
を次のように私は私の最初のビューShowName.cshtmlを持って
public class InfoModel
{
public NameModel Name { get; set; }
public string Phone { get; set; }
}
public class NameModel
{
public string Title { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<SelectListItem> Titles
{
get
{
var list = new List<SelectListItem>();
list.Add(new SelectListItem() { Text = "Mr.", Value = "Mr." });
list.Add(new SelectListItem() { Text = "Mrs.", Value = "Mrs." });
list.Add(new SelectListItem() { Text = "Ms.", Value = "Ms." });
return list;
}
}
public NameModel()
{
}
public NameModel(string first, string last)
{
this.FirstName = first;
this.LastName = last;
}
}
その後、私のモデルです
@model MyTestApp.Models.InfoModel
@using (Html.BeginForm())
{
@Html.Partial("ShowName", Model.Name)
<br />
@Html.LabelFor(m => m.Phone)
@Html.TextBoxFor(m => m.Phone)
<br />
<input type="submit" value="Submit Info" />
}
ユーザが何らかの情報を提出する場合、コントローラのメソッドは、
[HttpPost]
public ActionResult ShowInfo(InfoModel model)
{
...
}
問題は、電話機は問題ありませんが、名前はヌルです。 @Html.Partial("ShowName", Model.Name)
の電話番号を@Html.EditorFor(m => m.Name, "ShowName")
に変更すると、タイトルのドロップダウンが編集ボックスとして表示されます
私の質問で述べたように、エディタテンプレートを使用する際の問題は、リストタイトルをドロップダウンリストとして表示しないということです。私はそれで何をすると思いますか? –
@palmsnow、なぜそれが正しく表示されていないのですか?代わりにそれは何を表示しますか?また、間違った過負荷を使用しているようです。 '@Html.DropDownListFor(m => m.Title、Model.Titles)'を使うべきです。これは正常に動作するはずです。 –
私は他の過負荷でも試しました。ドロップダウンは編集ボックスとして表示されます。そのコレクションや何かが原因かもしれませんか? –