2013-06-14 30 views
7

Tôi đang gửi mô hình đến chế độ xem có chuỗi. Những chuỗi đó được mã hóa html và tôi không cần chúng. Bất kỳ cách nào để gửi mô hình đến chế độ xem không có mã hóa html?Cách nhận chuỗi mô hình MVC dưới dạng văn bản thuần túy trong các chế độ xem

mẫu:

public class Package 
{ 
    public string String { get; set; } 
} 

Bộ điều khiển:

public ActionResult GetPackage() 
{ 
    Package oPackage = new Package(); 
    oPackage.String = "using lots of \" and ' in this string"; 
    return View(oPackage); 
} 

Xem:

@model Models.Package 
<script type="text/javascript"> 
    (function() { 
     // Here @Model.String has lots of &#39; and &quot; 
     var String = "@Model.String".replace(/&#39;/g, "'").replace(/&quot;/g, "\""); 
     // Here String looks ok because I run the two replace functions. But it is possible to just get the string clean into the view? 
    })(); 
</script> 

Chạy thay thế chức năng là một giải pháp, nhưng chỉ nhận được chuỗi mà không cần mã hóa sẽ là tuyệt vời .

Trả lời

11
@Html.Raw(yourString) 

này nên làm việc:

@model Models.Package 
<script type="text/javascript"> 
    (function() { 
     var String = "@Html.Raw(Model.String)"; 
})(); 
</script> 
+0

Đây là câu trả lời đúng để loại bỏ các mã html. Tuy nhiên, vấn đề cho thấy chính nó như bây giờ là quá nhiều "trong văn bản gốc. Và rằng vít lên kèm theo của văn bản bên trong" ". Quay trở lại văn bản được mã hóa html và .replace(). – Espen

+1

Bởi vì câu trả lời loại bỏ những gì câu hỏi yêu cầu "nhận được chuỗi mà không có mã hóa" Tôi tìm thấy điều này là câu trả lời chính xác nhất. – Termato

3

Như tôi nghĩ rằng đây là khác biệt so với câu trả lời trước đây của tôi, tôi đặt ở đây một số khác. System.Web.HttpUtility.JavaScriptStringEncode(Model.String, true);

@model Models.Package 
<script type="text/javascript"> 
    (function() { 
     var String = "@System.Web.HttpUtility.JavaScriptStringEncode(Model.String, true)"; 
})(); 
</script> 

Hope this helps .. :)

4

Trước hết bạn cần phải chuyển đổi chuỗi để Javascript format.
Sau đó, bạn cần phải ngăn không cho MVC mã hóa lại dưới dạng HTML (vì Javascript của nó, không phải HTML).

Vì vậy, các mã bạn cần là:

@using System.Web 

@model Models.Package 

<script type="text/javascript"> 
    var s = "@Html.Raw(HttpUtility.JavaScriptStringEncode(Model.AnyString, addDoubleQuotes: false))"; 
</script> 
Các vấn đề liên quan