1

HTML로 MVC 부분 뷰를 반환하는 목적은 내 면도기 템플릿보기로 전달되는 뷰 모델에서 모든 것을로드하는 것입니다.왜 MVC 부분 뷰에서 반환 된 html 결과를 파싱 할 수 없습니까?

그러나 저는이 html 모델 데이터를 내 아약스 호출에서 내보기로 선택적으로로드하려고합니다.

var modelHTML = $.parseHTML(viewModelData); 

내가 한 단계 더 가고 싶어하고 수행 : 내가 jQuery를 사용하여 쿼리 가능 아마도 뭔가에 포맷되지 않은 HTML을 구문 분석 조각 인을 제외하고,이 물건을 구문 분석에 제로 문서를 발견했다

var elements = $('<div></div>'); 
elements.html(modelHTML); 
var matchingOption = $(elements).find("#selectListID option:first"); 
alert(matchingOption.val); 

하지만이 번뜩한 지껄 거리는 소리가납니다. json 결과를 반환하는 대신 viewmodel을 전달하는 부분 뷰 결과에서 반환 된 HTML을 구문 분석 할 수있는 방법이 있습니까?

여기 내 컨트롤러 코드의 요점이다 :

public ActionResult _MyPartialView(_PartialViewModel pvm) 
    { 
     _PartialViewModel _pvm = pvm; 

     _pvm.shapesList = new List<SelectListItem>(); 

      foreach(var item in context.shapesEntity.Where(x => x.shapeName.HasValue)) 
      { 
       _pvm.ShapesList.Add(new SelectListItem { Value = item.id, Text = item.name}); 
      } 

      return PartialView("_myPartialView", _pvm); 
    } 

참고 : 나는 성공적으로 DIV의 HTML 내 부분보기의 HTML을 대체했다. 그래서 그 작품과 사람들이 부분보기 HTML 결과를 사용하는 방법입니다. 하지만 나는 jquery로 이것을 쿼리하고 내가 원하는만큼 결과를 사용하고 싶다.

+0

컨트롤러 코드를 보여줄 수 있습니까? – Shriike

+0

@Shriike 수정 사항을 참조하십시오. 감사합니다 :) – Rachael

+0

이제 더 많은 디버깅 도구가 있고 구문 오류에 대한 대답을 얻었습니다. $ .parseHTML()은 실제로 불필요하다는 점에 유의하고 싶습니다. Jquery는 viewmodel html 데이터를 모두 쿼리 할 수 ​​있습니다. – Rachael

답변

1

이 문제를 해결하려면 문제가있는 곳을 참조하십시오.

우선이 줄에.

var modelHTML = $.parseHTML(viewModelData); 

당신은 당신의 행동의 반환 값이 이미 HTML과 당신이 사업부의 HTML을 설정 때 사용 만 할 수 있기 때문에, (내가 상처를 줄 의심) parseHTML를 사용할 필요가 없습니다.

var elements = $('<div></div>'); 
elements.html(modelHTML); 
var matchingOption = $(elements).find("#selectListID option:first"); 

그 모든

위의 잘 보이는, 당신이 원하는 것을 정확히해야한다 (액션에서 HTML을 가정하는 것은 selectListID라는 ID를 가지고 있으며 그 안에있는 옵션이 있습니다).

아래 라인은 실수가있는 곳이라고 생각합니다.

alert(matchingOption.val); 

val이 함수이므로 반환되는 함수 정의가 반환됩니다. 당신이 원하는 것은 이것과 같습니다. 대신 물론 사용 경고, 나는이 CONSOLE.LOG 선호 할 수

console.log(matchingOption.val()); 

, 당신은 또한 console.log(matchingOption) 사용할 수있는 당신의 콘솔에 객체를 뱉어.

+0

글쎄, 나는 어리 석다. 나는 이제 새로운 리소스로서 console.log를 가지고있다. (나는 jquery의 첫 번째 주에 있는데, 이것은 내가 지금 가지고있는 놀라운 도구이다!). 또한, 정말 말하기가 당혹 스럽네요 ...하지만 오류가 내 서버 쿼리에 있다는 것을 깨달 았어 :/.val() 스위치 .val() 및 귀하의 console.log 제안의 도움으로 내 오류를 잡을 수있었습니다. 내 경고/로그를 훨씬 쉽게 읽을 수있게하십시오. 정말 고마워. 또한 함수 정의를보고 있다고 설명해 주셔서 감사합니다. 나는 그것이 "지껄임"이 무엇인지 알지 못했습니다. – Rachael