1

MVC 4 응용 프로그램에서 다음과 같은 Kendo UI DropDownListFor가 있는데 제출할 때 null 값을받을 수 없습니다.검도 UI DropDownListFor 값은 null 바인딩 오류 일 수 없습니다.

@Html.Kendo() 
.DropDownListFor(m => m.JobTitle) 
.BindTo(ViewData["Jobs"] as SelectList) 

일반적으로 내가 처리 할 뷰 모델을 사용 바인딩하지만 난을 ViewData 목록 내 목록을 채우는 시도하고 있습니다 있도록 옵션이 아니다이 경우이다. 목록은 드롭 다운 목록에 정상적으로로드되지만 내 선택을 JobTitle 값과 연관시키지 않습니다. 이것에 대한 조언은 제가 생각할 수있는 모든 것을 시도 했으므로 크게 감사 할 것입니다.

답변

2

래퍼에 대해 DataTextField() 및 DataValueField() 속성을 지정 했습니까?

  @Html.Kendo().DropDownListFor(m => m.JobTitle) 
               .OptionLabel("Select Job Title...") 
               .DataTextField("text") 
               .DataValueField("value") 
.BindTo(ViewData["Jobs"] as SelectList) 

업데이트 :

List<SelectListItem> JobTitles = new List<SelectListItem>(); 
    JobTitles.Add(new SelectListItem { Value="One", Text = "One"}); 
    JobTitles.Add(new SelectListItem { Value="Two", Text = "Two"}); 
    JobTitles.Add(new SelectListItem { Value="Three", Text = "Three"}); 
    JobTitles.Add(new SelectListItem { Value = "Four", Text = "Four" }); 
    SelectList jobs = new SelectList(JobTitles, "value","text"); 
    ViewData["Jobs"] = jobs; 

업데이트 2 :

@Html.HiddenFor(m => m.JobTitle) 
@(Html.Kendo().DropDownList().Name("JobTitlesList").OptionLabel("Select Job Title...").Events(e => { 
       e.Change("listChange"); 
      }).BindTo(new SelectList((IEnumerable<string>)ViewData["Jobs"]))) 


//JScript event handler 

function listChange(e) 
    { 
    //console.log(e); 
    $('#JobTitle').val(e.sender.text()); 
    } 
+0

만약 그게 작동합니다 if 옵션을 하드 코딩하고 싶었지만 내 목록을 값과 연관시키지 않습니다. 목록은 데이터베이스에서 나오므로 코드 자체에 해당 값을 입력하고 싶지는 않습니다. – aw04

+0

명확히하기 위해 DataValueField는 문자열을 취하고 값은 목록에 있으므로이 경우 어떻게 작동하는지 잘 모르겠습니다. – aw04

+0

좋아, 명확히하기 위해 서버가 SelectList를 반환하고 대신 단순히 IEnumerable을 반환하도록 할 수있는 방법이 없습니까? –

1

나는 Name 속성을 지정 생략 때이 같은 문제가 있었다. 코드

@(Html.Kendo().DropDownListFor(m => m) 
.DataTextField("Text") 
       .DataValueField("Value") 
       .BindTo(new List<SelectListItem>() { 
       new SelectListItem() { 
        Text = "Select", 
        Value = null 
       }, 
       new SelectListItem() { 
        Text = "Yes", 
        Value = true.ToString() 
       }, 
       new SelectListItem() { 
        Text = "No", 
        Value = false.ToString() 
       } 
      }) 
.HtmlAttributes(new { data_value_primitive = "true" })) 

어떤 제안 :

2

저도 같은 문제가 있었을하지만 난 그것을 작동하게하는 as IEnumerable 대신 SelectList을 사용했다.

ViewData["prodUnits"] = 
DbHelper.GetUnitList("Stuff"); 

및 DbHelper은 다음과 같습니다 : 컨트롤러에서

   @(Html.Kendo().DropDownList() 
        .Name("ControlName") 
        .DataValueField("value") 
        .DataTextField("text") 
        .BindTo(ViewData["UnitList"] as IEnumerable) 

은을 ViewData는 다음과 같이 채워집니다

public virtual IEnumerable<Object> GetUnitList(string thing) 
    { 
     using (var Db = new dbEntities()) 
     { 
      return (from obj in Db.Units 
        where obj.things == thing 
        select new 
        { 
         value = obj.Unit_ID, 
         text = obj.Unit_Name 
        }).ToList().Distinct().OrderBy(obj => obj.value); 
     } 


    } 

솔직히 나는이 이해가 안 말할 것이다 및 오류가 전혀 내게 준 전혀 IEnumerable ViewData를 통해 보존되었습니다 어떻게 든 그것은 형식처럼 보이는 ...

+0

이 작업을 수행하는 방법에 대한 여러 가지 제안을 시도했으며,이 방법이 효과가있었습니다. –

관련 문제