如何将Kendo DropDownList DataTextField值传递给Controller

时间:2015-06-20 08:40:48

标签: asp.net-mvc kendo-ui kendo-asp.net-mvc html.dropdownlistfor kendo-dropdown

我在Kendo DropDownList上有一个View,我希望将 DataTextField 值传递给Controller,然后传递给他们另一个View中的标签。虽然我可以将DataValueField值传递给Controller,但我无法传递DataTextField值。我尝试应用不同的场景,但我不能。任何的想法?另一方面,如果不可能,DataTextField值是否应再次填充Controller并返回另一个View

查看:

@model IssueViewModel

...
@Html.LabelFor(m => m.ProjectID)
@(Html.Kendo().DropDownList()
    .Name("ProjectID")
    .DataTextField("ProjectName")
    .DataValueField("ProjectId")
    .DataSource(source =>
    {
        source.Read(read =>
        {
            read.Action("GetProjects", "Issue");
        });
    })
)

控制器:

public JsonResult GetProjects()
{
    var projects = repository.Projects;
    return Json(projects.Select(m => new { ProjectId = m.ID, ProjectName = m.Description }), JsonRequestBehavior.AllowGet);
}


/* I want to pass the DataTextField values to this 
method and return them to the CreateManagement view */
public ActionResult Create(IssueViewModel issueViewModel)
{
    return RedirectToAction("CreateManagement", issueViewModel);
}

1 个答案:

答案 0 :(得分:1)

将您的控制器更改为:

public JsonResult GetProjects()
{
    var projects = repository.Projects;
    return Json(projects.Select(m => new SelectListItem { ProjectId = m.Description, ProjectName = m.Description }).ToList(), JsonRequestBehavior.AllowGet);
}

由于DropDownList对用户使用DataTextField并使用DataValueField进行服务器通信,因此您必须为这两者使用DataTextField值。 然后您可以将它用于下一步操作。

修改:如果您需要控制器上的两个值,请将JsonResult方法更改为:

return Json(projects.Select(m => new SelectListItem { ProjectId = m.Description + "," + m.ID , ProjectName = m.Description }).ToList(), JsonRequestBehavior.AllowGet);

现在,您可以在下一个操作中使用它们,只需将它们拼写为:

var _both = value.split(',');//value: returned value from the view