私の問題は、Html.DropDownLisTFor ヘルパーが現在の行アイテムではなく、ページ モデルを使用しているようです。これを回避する方法はありますか?
これは私のビューモデルです:
public class DropTest
{
public IEnumerable<DropQuestion> DropQuestions { get; set; }
}
public class DropQuestion
{
public Int32? QuestionNo { get; set; }
public Int32? Status { get; set; }
public IEnumerable<SelectListItem> IStatuses { get; set; }
}
そして、これは私が望むビューです:
@model Blah.ViewModels.DropTest
@{
var DGrid = new WebGrid(Model.DropQuestions);
}
@DGrid.GetHtml(
columns: DGrid.Columns(
DGrid.Column("QuestionNo", "Question No"),
//I need this to work picking up the correct status for the current row??
DGrid.Column("Status", "StatusFor",
format: @<text>
@Html.DropDownListFor(x => x.Status, Model.IStatuses)
` </text>),
)))
DropDownList を使用できますが、これは「選択済み」を正しく割り当てません
アドバイスをよろしくお願いします。
私の問題は、モデルに一時型を追加し、別の列の Status 値を割り当てることで修正されました。これは、すべての作業を 1 つの列で行うことで改善される可能性があります。私の ViewmModel には、次の修正が加えられました。
public class DropTest
{
public IEnumerable<DropQuestion> DropQuestions { get; set; }
public Int32 GridStatus { get; set; }
}
とビュー:
DGrid.Column("QuestionNo", "Question No",
format: ((item) => { Model.GridStatus = item.Status ?? 0; return item.QuestionNo; } )),
DGrid.Column("Status", "StatusFor",
format: @<text>
@Html.DropDownListFor(x => x.GridStatus, Model.IStatuses)
</text>),
これが誰かを助けるか、他の誰かによって完璧に改善されることさえ願っています!