레이저와 자바스크립트 코드 혼합
저는 면도기와 js를 섞는 방법에 대해 꽤 혼란스럽습니다.현재 사용 중인 기능은 다음과 같습니다.
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
data.push([ @r.UnixTime * 1000, @r.Value ]);
}
c# code를 선언할 수 있다면,<c#></c#>
그리고 다른 건 JS 코드였어요. 이게 제가 원하는 겁니다.
<script type="text/javascript">
var data = [];
<c#>@foreach (var r in Model.rows) {</c#>
data.push([ <c#>@r.UnixTime</c#> * 1000, <c#>@r.Value</c#> ]);
<c#>}</c#>
이를 달성하기 위한 최선의 방법은 무엇입니까?
사용하다<text>
:
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
<text>
data.push([ @r.UnixTime * 1000, @r.Value ]);
</text>
}
</script>
코드 블록 내부(예:@foreach
), 또는 태그로 마크업(또는 이 경우에는 자바스크립트)을 표시해야 합니다.
마크업 콘텍스트 안에서 코드를 코드 블록으로 둘러싸야 합니다 (@{ ... }
아니면@if
, ...)
간단히 사용할 수도 있습니다.
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
@:data.push([ @r.UnixTime * 1000, @r.Value ]);
}
</script>
참고 @:
더 이상의 언어를 섞지 마십시오.
<script type="text/javascript">
var data = @Json.Encode(Model); // !!!! export data !!!!
for(var prop in data){
console.log( prop + " "+ data[prop]);
}
문제가 있는 경우 시도해 볼 수도 있습니다.
@Html.Raw(Json.Encode(Model));
보기에서 자바스크립트를 분리하는 비전통적인 방법이지만 여전히 면도기를 사용하는 것은Scripts.cshtml
혼합된 자바스크립트/razor를 파일로 작성하여 거기에 놓습니다.
Index.cshtml
<div id="Result">
</div>
<button id="btnLoad">Click me</button>
@section scripts
{
@Html.Partial("Scripts")
}
Scripts.cshtml
<script type="text/javascript">
var url = "@Url.Action("Index", "Home")";
$(document).ready(function() {
$("#btnLoad").click(function() {
$.ajax({
type: "POST",
url: url ,
data: {someParameter: "some value"},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#Result").text(msg.d);
}
});
});
});
</script>
이게 제가 레이저를 해킹해서 자바스크립트를 사용하는 방법입니다. 인텔리센스를 당황시키지 않고 말이죠.
당연히 사용해야 합니다.<text>
"expedient"를 쓰고요 전에 이중 교정기를 하고요
단일 가새를 사용하면 다음과 같은 일이 발생합니다.
교정기 몇 개를 사용하면 다음과 같은 일이 발생합니다.
이제 상수와 변수가 인식되었습니다.더 낫긴 하지만 좋지는 않아요!다음이 태그의 이름이라고 생각하게 만드는 지능적인 혼란을 주는 "less than" 기호가 여전히 있습니다."미만" 기호는 오류로 표시되며 여기서부터는 "console.log"에 표시되는 구문 분석 오류가 발생합니다.당신은 컴파일 시에 최종 JS 코드에서 반환되지 않고 지능적으로 조용해지는 것을 추가해야 합니다.
해결책: 다음 설명은 "less than" 다음에 사용합니다./*>*/
여기 결과물이야.
보기에는 꽤 이상하지만, 그것은 정상적으로 작동합니다.
당신은 사용할 수 있습니다.<text>
javascript로 cshtml 코드 모두 태그 지정
JS 스크립트 안에 있을 때는 Razor 코드를 @{ }에 싸서 @를 사용해야 합니다. 때로는 작동하지 않습니다.
function hideSurveyReminder() {
@Session["_isSurveyPassed"] = true;
}
이것은 생산할 것입니다.
function hideSurveyReminder() {
False = true;
}
브라우저에서 =()
언급URL : https://stackoverflow.com/questions/5614941/mix-razor-and-javascript-code
'programing' 카테고리의 다른 글
루트가 아닌 하위 디렉토리에서 워드프레스 실행 (0) | 2023.10.21 |
---|---|
JPA 외부 키 0 값 최대 절전 모드 과도 속성 값 예외 (0) | 2023.10.21 |
unitest Vspytest (0) | 2023.10.21 |
비트 와이즈 연산으로 인해 예기치 않은 변수 크기가 발생함 (0) | 2023.10.21 |
ORA-00920: 잘못된 관계 연산자 (0) | 2023.10.21 |