0

У меня есть Kendo DropDownList на View и я хочу передать его значение DataTextField к Controller, а затем передать их и на этикетках в другом View. Хотя я могу передать DataValueField значениям Controller, я не могу передать DataTextField значений. Я попытался применить различные сценарии, но не смог. Есть идеи? С другой стороны, если это невозможно, следует ли заново заполнить значения DataTextField на Controller и вернуться к другому View?Как пройти значение Кендо DropDownList DataTextField контролер

Вид:

@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

@AmirHosseinMehrvarzi Selam Hossein. Любой ответ, пожалуйста? –

+1

Если вы используете 'DataTextField', а не' DataValueField 'на контроллере, то почему вы не перечисляете' DataTextField 'как' DataValueField'? –

+0

@AmirHosseinMehrvarzi Не могли бы вы разместить образец кода, пожалуйста? Я действительно пробовал много способов, но я думаю, что сделал ошибки и не знаю, как это решить? –

ответ

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 для обоих. Затем вы можете использовать его для следующих операций.

Edit: если вам нужны оба значения на контроллере, измените JsonResult метод:

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

Теперь вы можете использовать как в последующих операциях, просто spiting им нравится:

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

Спасибо за ответ.Но я думаю, что мне понадобится DataValueField для следующей операции, чтобы передать идентификатор для создания новой записи. Итак, решит ли она эту проблему? –

+0

Итак, вам нужны оба значения? –

+0

Да. Фактически issueViewModel сохраняет значения DataValueField, но я не уверен, сохраняется ли он после применения предложенных изменений. Попробуем? –

Смежные вопросы