2010-12-14 36 views
17

Tôi có bộ điều khiển ASP.NET MVC có tên từ điển với phương thức ControlsLangJsFile. Phương thức trả về dạng xem kiểm soát người dùng (ASCX) có chứa các biến JavaScript.Cách thay đổi kiểu nội dung trả về trong bộ điều khiển ASP.NET MVC (ActionResult)

Khi tôi gọi phương thức, nó trả về biến với chuỗi được phân tích cú pháp, nhưng Loại nội dung là html/văn bản. Nó nên là: application/x-javascript

public ActionResult ControlsLangJsFile() 
    { 
     return View("~/Views/Dictionary/ControlsLangJsFile.ascx",); 
    } 

Làm thế nào để tôi đạt được điều này?

Trả lời

27

Người dùng điều khiển không chấp nhận ContentType = "text/xml"

Giải pháp:

public ActionResult ControlsLangJsFile() 
    { 
     Response.ContentType = "text/javascript"; 
     return View("~/Views/Dictionary/ControlsLangJsFile.ascx"); 
    } 
+2

Điều này không hiệu quả đối với chế độ xem Dao cạo (không chắc chắn về các công cụ xem khác). Xem [trả lời của tôi] (http://stackoverflow.com/a/15930411/5496) cho giải pháp: – Peter

+0

Tôi đang sử dụng Razor/MVC 4 và điều này hoạt động tốt trong bộ điều khiển (đó là nơi tôi muốn đặt này vì tôi thậm chí không muốn xem nếu tôi trả về loại tệp, chẳng hạn như PDF). – Fenton

2

Như thế này, chỉ cần thay đổi kiểu nội dung cho phù hợp:

ASP.NET MVC and text/xml content type

+0

Người dùng kiểm soát Dosn't chấp nhận ContentType = "text/xml" – jmav

+0

Xin vui lòng, cũng thấy những câu trả lời khác ... – rsenna

+0

tôi đã làm, cũng thêm một giải pháp khác, thx – jmav

1

Thử :

return Json(new 
{ 
     uCode = SysContext.CurrentUserCode, 
     uPwd = SysContext.CurrentUserPwd, 
     rMe = SysContext.RememberMe 
}, "application/json", JsonRequestBehavior.AllowGet); 
.210
14

Tôi có câu hỏi này tương tự trong khi xây dựng một cái nhìn dao cạo với JS trong đó và cố gắng sử dụng @ giải pháp jmav của:

public ActionResult Paths() 
{ 
    Response.ContentType = "text/javascript"; //this has no effect 
    return View(); 
} 

Đó không hoạt động khi bạn đang trở về một View(). Dường như việc hiển thị chế độ xem đặt chính loại nội dung mặc dù những gì được gán trong phương thức bộ điều khiển.

Thay vào đó, hãy phân công trong các mã xem bản thân:

// this lives in viewname.cshtml/vbhtml 
@{ 
    this.Response.ContentType = "text/javascript"; 
} 
// script stuff... 
+1

Đặt 'Response.ContentType' trong tác vụ Bộ điều khiển làm việc cho tôi trong MVC 3. –

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