아래의 MVC보기 코드에서 isLoggedInDb에 도구 설명이 녹색으로 밑줄이 그어져 있습니다. ';'. 분명히;가 있으며 Google에게는 어렵습니다. 그 위에. 다른 사람들이 JavaScript 서버를 이런 식으로 만드는 데 문제가 있다는 것을 보았습니다. 아마도 모범 사례가 아닙니다. 이 문제를 무시해야합니까, 아니면 Intellisense가 불만을 제기 할 합법적 인 이유가 있습니까?면도기 : 예상 ';' JavaScript 블록에서 C#으로 문자열을 선언 할 때
@* SHTML Code Above *@
<script type="text/javascript">
@{
string isLoggedInDb;
if(Session["isLoggedInDb"] != null)
{
if(Session["isLoggedInDb"].ToString() == "1")
{
isLoggedInDb = "1";
}
else
{
isLoggedInDb = "0";
}
}
}
var [email protected](isLoggedInDb);
@*....etc*@
}
편집 : 단지가 종종 캐시 별도의 파일에 자바 스크립트를 유지하는 가장 좋은 방법은 간주 될 수 있기 때문에 아마 프로그래밍 방식으로 자바 스크립트를 구축하는 것은 좋은 생각이 아니라고 나에게 발생
. JavaScript에서 대신 읽는 HTML의 숨겨진 변수를 프로그래밍해야한다고 생각합니다. 어쩌면 누군가가 이것을 확인할 수 있습니다.
당신이 옳습니다. 매우 간단합니다.
나는 100 % 확실하지 않다,하지만 당신은
@{ }
이 시도 면도칼 코드 블록에 있기 때문에 나는 컴파일러는 C# 코드로 보는 생각 :에 관해서는
서버에서 JS를 작성하면 개인적으로 생각을 견딜 수 없다 (필자는 클라이언트/서버/CSS 코드를 병합하는 것을 좋아하지 않는다). 나는 그 성능에 대해 이야기 할 수는 없지만 모든 JS가 어디서 왔는지를 추적하는 악몽 유지 관리 시나리오에 대해 스스로를 설정하고 있다고 말하면서 스크립트를 쉽게 디버그하고 관리 할 수있는 능력을 잃지는 않을 것입니다.
출처
2012-06-16 00:55:04 Terry
감사합니다. 제이슨의 방법은 효과가 있었고, 위의 방법을 시도했지만, C#이 js 안에있는 한 인텔리 센스는 엉망이되었습니다. 나는 당신이 말하는 것처럼이 기술을 피하려고 노력할 것입니다. – Dave
당신이 비슷한을 복용의 접근을해야한다고 생각 :
IsLoggedInDb 당신의 ViewModel의 일부가되어야합니다, 당신의보기 세션을 확인되어서는 안된다, 이것은 매우 취성, 쉽게 테스트 할 수없는, 그리고 contro llers 목적은 프리젠 테이션 레이어 (보기)의 데이터를 조율하는 것입니다.
출처
2012-06-16 07:20:28
고마워, 내가 서둘러서 최선의 방법 대신 마음에 와서 첫 번째 방법을 찾은 것 같아. 나는 그것을 시도 할 것이다. – Dave
더 이상 생각해 보면이 코드는 부모 레이아웃 안에 있으며 모델을 할당하는 방법을 모르겠습니다. 모델을 정규 페이지에 할당하는 데 익숙해졌습니다. 모델을 마스터 레이아웃에 할당하는 방법에 대한 간단한 가이드가 있습니까? – Dave
그런 경우 단순히 레이아웃의 일부로 RenderAction을 사용하십시오. 귀하의 견해는 세션 객체를 완전히 인식하지 못하고 깨끗한 MVC 패턴을 유지합니다. –