Asp.net mvc 使用自定义数据类型发布/提交/保存模型

Asp.net mvc 使用自定义数据类型发布/提交/保存模型,asp.net-mvc,data-manipulation,metadatatype,Asp.net Mvc,Data Manipulation,Metadatatype,我已经创建了一个自定义数据类型(“Days”),并且能够创建一个局部视图“Days.cshtml”,它可以很好地呈现一个选择列表 我能够很好地从表单中填充select列表,但是我似乎找不到任何关于如何使用填充的自定义数据类型值发布模型的文档 public class TimeRequestModel { public int EmployeeID { get; set; } public int JobAllocationID { get; set; } [DataTyp

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

我能够很好地从表单中填充select列表,但是我似乎找不到任何关于如何使用填充的自定义数据类型值发布模型的文档

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

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

在ViewModel中再添加一个属性:string DaysSelectedValue

使您的DropDownList如下所示:

@Html.DropDownList(model=>model.DaysSelectedValue,model.Days,新建{@class=“customfield”、@type=“custom”、@multiple=“multiple”、@size=“14”、@style=“text align:center;float:right;width:225px;”)

我真的不明白为什么要检查视图中的模型是否为null。据我所见,它永远不应该为null。

Days.cshtml是一个EditorTemplate,当我尝试使用lamda表达式时,会出现错误:“无法将lambda表达式转换为'string',因为它不是委托类型”。您能解释一下吗?我确实尝试了@using System.linq您能显示控制器([HttpGet]和[HttpPost]ActionResults)以及您试图呈现的视图吗?
@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);
    }