2013-01-20 30 views
7

Đây là mã của tôi dao cạo mà ném lỗi:asp.net MVC 4 javascript khối bên trong dao cạo ném lỗi

@section script 
{ 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      @if (TempData["Message"] != null) 
      { 
       showNotification("'" + TempData["Message"].ToString() + "'"); 
      } 
     }); 
    </script> 
} 

Nó nói showNotification không tồn tại. Nó nghĩ rằng đây là một mã C#, nơi nó là một hàm javascript. Ai có thể vui lòng cho tôi biết làm cách nào để khắc phục lỗi này? Cảm ơn!

+0

Tôi biết đây không phải là câu trả lời và mọi người sẽ cho bạn thấy một trong nhiều cách để khắc phục điều này (@: cú pháp cho một). Tôi chỉ cần xóa hoàn toàn câu lệnh @if và không gọi ToString() một cách rõ ràng nhưng hãy để nó được gọi ngầm. Điều đó làm việc –

+0

Vấn đề với TempData là nếu TempData ["Foo"] là null, sau đó u nhận được một NPE. vì vậy hãy sử dụng ViewBag – DarthVader

Trả lời

15

Ném một thẻ text xung quanh nó, vì trình biên dịch cho rằng JavaScript của bạn là cú pháp Razor. Khi thực hiện việc này, bạn sẽ cần thêm một số @ vào lệnh gọi TempData.

@section script 
{ 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      @if (TempData["Message"] != null) 
      { 
       <text>showNotification('@TempData["Message"].ToString()');</text> 
      } 
     }); 
    </script> 
} 
6

Ngoài câu trả lời của @ Martin, bạn cũng có thể đặt @: trước cuộc gọi showNotification. Cú pháp @: cho Razor biết rằng dòng đơn là HTML, trong đó dấu hiệu cho biết Razor xử lý mọi thứ bên trong thẻ văn bản dưới dạng HTML (hữu ích cho nhiều dòng, trong đó @: tốt cho một dòng).

Các vấn đề liên quan