2016-06-18 2 views
-1

MVC5, 면도기 및 C#을 사용 중입니다.편집 가능한 저장된 사용자 정의 값을 표시하는 방법 JQuery를 사용하여 MVC Asp.net에서 선택 편집 가능한 플러그인 선택?

기존의 MVC 드롭 다운 목록이 있습니다.

@Html.DropDownListFor(model => model.Car, (SelectList)ViewBag.CarSelectList, " -- Please Select --") 

가 나는 JQuery와 편집 가능한 선택 플러그인을 사용하여 수행 한 편집 가능한 드롭 다운으로이 변환하고자, 참조 : JQuery Editable Select WebPage를 사용하여 :

$(function() { 
    $("#Car").editableSelect(); 
}); 

이를 모두 잘 작동합니다. 그러나 SelectList에없는 맞춤형 자동차를 입력하면 멀리 저장되지만 편집 페이지를 새로 고침하면 드롭 다운에 맞춤식 차량 즉 'KitCar1'이 표시되지 않습니다. 나는 이것이이 "KitCar1"이 선택 목록에 없기 때문에 일치 할 수 없다는 사실과 관련이 있다고 생각합니다. 그러나 페이지를 다시 표시 할 때 편집 가능한 드롭에 "KitCar1"을 어떻게 표시 할 수 있습니까?

내가 가진 유일한 아이디어는 작동하는 별도의 읽기 전용 "div"에 "Model.Car"을 표시하는 것이지만 훌륭한 솔루션은 아닙니다.

감사합니다.

편집 1 :

본인은 "GET 작업"내 "selectList의"에 새로운 "SelectItem"로 저장된 값을 추가함으로써 해결책을 발견했다. 그런 다음 올바른 값으로 드롭 다운을 생성했습니다.

+0

아마도 컨텍스트가 새로 고쳐지지 않았기 때문일 수 있습니다. –

+0

편집 페이지를 새로 고친 후 EF에서 얻을 수있는 값 –

+0

더 잘 이해하려면 'SelectList에없는 맞춤형 자동차를 입력 할 때'멀리 저장됩니다. '라고 말하면됩니다. 이것은 입력 한 옵션이 드롭 다운 상자에 삽입된다는 것을 의미합니까? – fictus

답변

1

데이터 지속성이 필요한 것처럼 보입니다.이 작업은 모델을 통해 수행 할 수 있습니다. 드롭 다운 목록에 항목을 추가 할 때마다 항목을 일종의 데이터베이스에 추가해야합니다.

AJAX를 사용하여 모델에 이러한 항목을 추가하는 것이 좋습니다.

당신은 당신의 컨트롤러 방법을 가지고 있어야

그 모델에 게시물 항목 : 당신의 jQuery를에

public void AddCarsToModel (string[] cars) 
{ 
     List<Car> carNames = new List<Car>(); 

     foreach (Car car in cars) 
     { 
      carNames.Add(
      new Car 
      { 
       CarName = car 
      }); 
     } 

     try 
     { 
      db.SaveChanges(); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e); 
     } 
} 

및 AJAX 당신의보기의 방법에 게시물 : 입력

$('#Cars').editableSelect({ 
    onCreate: function() { 

     var carsArray = []; 
     //for every car added to the dop down list, append it to the array 

$.ajax({ 
      type: "POST", 
      traditional: true, 
      url: "@Url.Action("AddCarsToModel", "Controller")", 
      data: { cars: carsArray }, 
     success: function() { 
      alert("Success!"); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      if (debug) { 
       alert(XMLHttpRequest.responseText); 
       alert(textStatus); 
       alert(errorThrown); 
      } 
     } 
    } 
}); 
+0

고마워, 내 대답을 참조하십시오 .. – SamJolly

1

그것이 선택되었던 통제에서 떨어져서 저장하게되는 주문의 차. 페이지가 다시로드 될 때까지 유지됩니다.

페이지를 새로 고치면 서버에서 오는 데이터로 DropDown 컨트롤이 재설정됩니다. 사용자 지정 편집 가능 DropDown은 해당 DropDown 옵션 목록을 사용하여 다시 작성됩니다.

새로 추가 한 맞춤 차량을 유지하려면 새 맞춤 차량을 서버에 저장해야합니다. 구체적으로 DB에.

Ajax은 좋은 선택입니다.

+0

감사합니다. Insert()를 사용하여 SelectList에 새 selectItem으로 저장된 값을 추가하는 작업이 끝났습니다. 이 모든 것이 이제는 잘됩니다. – SamJolly

관련 문제