如何将 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
我在 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