1

我的问题似乎是 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 但这没有正确分配“选定”

提前感谢您的任何建议。

我的问题是通过向模型添加一个临时类型并将其分配给另一列中的状态值来解决的。这可以通过在一列中完成所有工作来改进,因为我无法弄清楚如何不出错?我的 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>),

希望这可以帮助某人,甚至可以被其他人改进到完美!

4

1 回答 1

1

基本上,我在模型中添加了一个名为 GridStatus 的新临时变量,并使用它来代替 Status。在网格中的任何列中,它必须分配给 item.Status

于 2013-11-22T15:35:35.893 回答