2012-11-05 3 views
0

ASP.NET MVC를 사용하기 시작했으며 javascript 및 css로 빌드 된 내비게이션이 있습니다. 네비게이션은 접을 수있어 메뉴가 축소되었을 때 1cm 정도만 걸립니다. 내 문제는 단추를 클릭하고 CSS 클래스를 설정하여 상태 (축소/확장)를 변경해야한다는 것입니다. 하지만 메뉴 항목을 클릭하면 페이지가 다시로드되어 css 클래스도 손실됩니다.mvc에서 데이터 지속

어떻게 이러한 데이터를 올바르게 유지할 수 있습니까? 정상적인보기에서 나는 그것을 내 viewmodel에 전달할 수 있지만, 어떻게 내 _layout.cshtml에서 이것을 할 수 있습니까? (나는 그곳에서 모델을 설정할 수 없다.)

나는 jquery 플러그인 "쿠키"를 사용하고 있었지만 가끔은 (문제는 플러그인의 옵션 어딘가에 있다고 생각한다. 어쩌면 나는 설정해야한다. 도메인 또는 뭔가 ...). 또한 솔루션이 사용자가 쿠키를 허용해야하는 경우에는 좋을 것입니다.

도움이 되었으면 좋겠다!

편집 : 좋아, 내가 지금하려고하는 것입니다 :

// 뷰

@model NHibernateSimpleDemoMVC.Models.MenuModel 
.... 
<a id="togglemenu" /> 

@Html.HiddenFor(x => x.IsCollapsed, new { @id = "collapsedHdn" }) 

... 

<script> 
jQuery('#togglemenu').click(
    function() { 
     if (jQuery("#collapsedHdn").val() == "true") { 
      jQuery("#collapsedHdn").val("false") 
     } else { 
      jQuery("#collapsedHdn").val("true") 
     } 
    }); 

jQuery('#nav > li').click(
    function() { 
     var name = jQuery(this).attr("id"); 
     jQuery("#selectedHdn").val(name); 
    } 
    ); 


jQuery(document).ready(function() { 
    //set selected node 
    if (jQuery("#collapsedHdn").val() == "true") { 
     ... collapse ... 
    } 
    if (jQuery("#selectedHdn").val() != "") { //this is always empty ("") 
     var name = "#" + jQuery("#selectedHdn").val(); 
     jQuery(name).addClass("current"); 
    } 
}); 

</script> 

// 모델

public class MenuModel 
{ 
    public bool IsCollapsed { get; set; } 
    public string SelectedEntry { get; set; } 

    public MenuModel(){ 
     IsCollapsed = false; 
     SelectedEntry = ""; 
    } 
} 

... 내 숨겨진 필드에없는 것 다시 게시 후 가치를 유지하십시오 ...

+1

때문에 기본 페이지에서 다른 contollers 사이의 데이터를 유지하려고하는 거에요은? –

+0

아니요, 내 _layout.cshtml (기본적으로 내 마스터 페이지)을 가지고 있고 탐색 기능이있는 div가 있습니다. 이 탐색은 접을 수 있습니다. 내 문제는 어떻게 든이 탐색의 상태를 저장해야한다는 것입니다. 그래서 내비게이션이 무너 지거나 확장되었는지 추적해야합니다. – r3try

답변

1

유용한 관련 질문이있다 : ASP.NET MVC Razor pass model to layout

+0

오, 고마워 .. 렌더링은 좋은 방법 인 것 같다. 나는 내일 이것을 들여다 볼 것이다. 지금까지 도와 줘서 고마워! – r3try

0

일반적으로 va 페이지 및 해당 페이지를 가리키는 탐색 메뉴 항목의 lue. 예 : 제목 또는 이와 유사한 내용.

이 값을 읽고 해당 메뉴 항목을 찾으면 DOM이 완전히로드 된 후 jQuery/Javascript를 사용하여 CSS 클래스를 설정할 수 있습니다.

쿠키를 사용하는 것이 분명하지 않습니다.

관련 문제