AJAX 템플릿과 JSON을 사용하여 동적 메뉴를로드하는 MVC 마스터 페이지가 있습니다. JSON은 다음 호출로 반환됩니다.
var tabList = []; //이 돌아 내 HomeController에 JSON
var getTabs = function() {
$.getJSON('Home/TabList', null, function (json) {
Sys.Observer.clear(tabList);
Sys.Observer.addRange(tabList, json);
});
}
if (tabList == '') { getTabs(); }
그래서이 함수를 호출하는 콜백에서 JSON 데이터를 보유 :
public JsonResult TabList()
{
//get tabs
... //call code to get tabs - removed for ease of reading this question
JsonResult jsonTabs = Json(tabItems);
jsonTabs.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return jsonTabs;
}
catch (Exception ex)
{ throw ex; }
}
이 다음 템플릿에 사용됩니다 바인딩 :
id = "tabTemplate"sys : attach = "dataview"class = "sys-template grid_16 topnav"dataview : data = "{{tabList}}"
anc를 사용하여 메뉴 항목 만들기 HOR 태그 :
SYS : HREF = "{{ '/'+ 컨트롤러 + '/'+ 액션 + '/'}}"목표로부터 등록 정보를 사용하여 메뉴 텍스트 채우기 = "_ 가기"
JSON 개체 :
가그때 2 개 개의 다른 MVC 페이지에이 마스터 페이지를 부착
{{텍스트}} ("인덱스"및 "정보", 및 Global.asax에 나를 필요로 "인덱스")
그래서 처음에는 페이지에 들어가서 메뉴가 올바르게 그려지지만, 정보 메뉴를 클릭하면 위에서 "Home/About"링크가있는 템플릿에서 생성 된 다음 작동을 멈 춥니 다. 무슨 일이 일어날 javascript가 올바르게 호출됩니다 (즉 그것은 "getTabs"함수를 호출하고 getJSON 호출을 통과합니다)하지만 JSON을 얻으려면 컨트롤러에 실제로 도달하지 않습니다 (컨트롤러 동작에 브레크 포인트를 넣었습니다. 이 경우에는 명중되지 않는다).
나는 완전히 손실되었고 며칠 동안 이것을 해결하려고 노력 해왔다. 어떤 도움이라도 대단히 감사하겠습니다.
감사합니다.
HTHs - 정말 감사합니다,이 큰 도움이됩니다! –