0

我创建了一个自定义 DataType("Days") 并且能够创建一个局部视图“Days.cshtml”,它可以很好地呈现一个选择列表。

我可以很好地从表单中填充选择列表,但我似乎找不到任何关于如何发布模型并填充了自定义 DataType 值的文档。

public class TimeRequestModel
{
    public int EmployeeID { get; set; }
    public int JobAllocationID { get; set; }
    [DataType("Days")]
    public List<SelectListItem> Days { get; set; }
}

Days.cshtml(模型很可能为空,因为我们正在创建新的“Days”)

@model TimeRequestModel
@Html.DropDownList("", (Model != null ? Model.Days : new List<SelectListItem>()), new { @class = "customfield", @type = "custom", @multiple = "multiple", @size = "14", @style = "text-align: center; float: right; width: 225px;" })

我的控制器:

[HttpPost]
    public ActionResult CreateRequest(TimeRequestModel timeRequest)
    {
        if (ModelState.IsValid)
        {
            translator.CreateTimeRequest(timeRequest);
            return RedirectToAction("Index");
        }

        return View(timeRequest);
    }

在发布模型时,timeRequest.Days 始终为空。

4

1 回答 1

0

在您的 ViewModel 中再添加一个属性:字符串 DaysSelectedValue

使您的 DropDownList 看起来像这样:

@Html.DropDownList(model => model.DaysSelectedValue, Model.Days, new { @class = "customfield", @type = "custom", @multiple = "multiple", @size = "14", @style = "text-align: center; float: right; width: 225px;" })

我真的不明白你为什么要检查视图中的模型是否为空。从我所看到的,它永远不应该为空。

于 2011-10-12T07:13:11.700 回答