Asp.net mvc asp.net mvc中带dropdownlist的modelbinder

Asp.net mvc asp.net mvc中带dropdownlist的modelbinder,asp.net-mvc,Asp.net Mvc,以下是我想做的: 我有一个具有TaskName属性和TaskPriority属性的实体Task 现在,在html中,我有: <td><%=Html.TextBox("Task.TaskName") %></td> <td><%=Html.DropDownList("Task.TaskPriority",new SelectList(ViewData.Model.TaskPriorities,"ID","PriorityName")) %>

以下是我想做的:

我有一个具有TaskName属性和TaskPriority属性的实体Task

现在,在html中,我有:

<td><%=Html.TextBox("Task.TaskName") %></td>
<td><%=Html.DropDownList("Task.TaskPriority",new SelectList(ViewData.Model.TaskPriorities,"ID","PriorityName")) %></td>
编辑 在下面的示例中(从Schotime开始):

这应该行得通

三类:

    public class Container
    {
        public string name { get; set; }
        public List<Dropdown> drops { get; set; }
    }

    public class Dropdown
    {
        public int id { get; set; }
        public string value { get; set; }
    }

    public class Task
    {
        public int name { get; set; }
        public TaskPriority priority { get; set; }
    }

    public class TaskPriority
    {
        public string value { get; set; }
        ...
    }
公共类容器
{
公共字符串名称{get;set;}
公共列表删除{get;set;}
}
公共类下拉列表
{
公共int id{get;set;}
公共字符串值{get;set;}
}
公开课任务
{
公共int名称{get;set;}
公共任务优先级{get;set;}
}
公共类任务优先级
{
公共字符串值{get;set;}
...
}
控制器:

    public ActionResult Tasks()
    {
        List<dropdown> ds = new List<Dropdown>();
        ds.Add(new Dropdown() { id = 1, value = "first" });
        ds.Add(new Dropdown() { id = 2, value = "second" });

        ViewData.Model = new Container() { name = "name", drops = ds };

        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Tasks(Task drops)
    {
        //drops return values for both name and value
        return View();
    }
public ActionResult任务()
{
List ds=新列表();
Add(new Dropdown(){id=1,value=“first”});
Add(new Dropdown(){id=2,value=“second”});
ViewData.Model=newcontainer(){name=“name”,drops=ds};
返回视图();
}
[接受动词(HttpVerbs.Post)]
公共操作结果任务(任务删除)
{
//删除名称和值的返回值
返回视图();
}
视图:强类型
Viewpage


当我调试时,它按预期工作。 如果你有类似的事情,我不确定你做错了什么。
干杯。

你是说任务优先级是一门课吗??如果是这样,则需要为dropdownlist名称指定Task.TaskPriority.PropertyName。这确实有效:)。请编辑您的答案,以便我可以接受。
    public class Container
    {
        public string name { get; set; }
        public List<Dropdown> drops { get; set; }
    }

    public class Dropdown
    {
        public int id { get; set; }
        public string value { get; set; }
    }

    public class Task
    {
        public int name { get; set; }
        public TaskPriority priority { get; set; }
    }

    public class TaskPriority
    {
        public string value { get; set; }
        ...
    }
    public ActionResult Tasks()
    {
        List<dropdown> ds = new List<Dropdown>();
        ds.Add(new Dropdown() { id = 1, value = "first" });
        ds.Add(new Dropdown() { id = 2, value = "second" });

        ViewData.Model = new Container() { name = "name", drops = ds };

        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Tasks(Task drops)
    {
        //drops return values for both name and value
        return View();
    }
<%= Html.BeginForm() %>
<%= Html.TextBox("drops.name") %>
<%= Html.DropDownList("drops.priority.value",new SelectList(ViewData.Model.drops,"id","value")) %>
<%= Html.SubmitButton() %>
<% Html.EndForm(); %>