如何将 Kendo DropDownList DataTextField 值传递给控制器

How to Pass Kendo DropDownList DataTextField value to Controller

我在 View 上有一个 Kendo DropDownList,我想将它的 DataTextField 值传递给 Controller 并且然后将它们传递到另一个 View 中的标签上。虽然我可以将 DataValueField 值传递给 Controller,但我无法传递 DataTextField 值。我尝试应用不同的场景,但我做不到。任何的想法?另一方面,如果不可能,是否应该在 Controller 和 return 上再次填充 DataTextField 值到另一个 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);
}

将您的控制器更改为:

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