我在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);
}
答案 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