2011-12-19 39 views
0

我知道我可以將以下內容添加到web.config文件中,以實現我想實現的目標。ASP .NET MVC 3 - RequestEncoding和ResponseEncoding爲單個視圖?

不過,我只想要一個單一視圖的,不是所有的人UTF-32。我怎樣才能做到這一點?我知道如何做到這一點與我的迴應:

HttpContext.Current.Response.Headers["Content-Type"] += ";charset=utf-32"; 

但如何做到這一點與我的要求?

編輯 根據要求,我的意思是相當於這個:http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx。通過指定該屬性,可以指定請求編碼。

+0

目前還不清楚你想要做什麼。 – 2011-12-20 12:42:41

回答

2

你是什麼意思「如何做到這一點與我的要求?」。 Request對象中的值是關於您的客戶訪問您的網站的。你想向服務器端請求一個URL嗎?

如果你想使一個服務器端的請求,你可以把值改爲:

WebRequest request = WebRequest.Create("domain.com"); 
    request.ContentType = "application/xxx; charset=utf-32"; 
    request.GetResponse(); 

編輯:Request的值是由你的請求URL的客戶決定的。在您分享的頁面中,有一個requestEncoding屬性。但屬性的描述說明它指定假定編碼。但很顯然,任何在其Header中包含Accept-Charset的請求都會覆蓋您的設置。順便說一下,建議任何建築物都屬於requestEncoding設置不建議。如果你正在開發一個多用戶或公共應用程序,你可能不會決定如何形成請求。

您還可以使用Web客戶端的UploadData方法做到這一點:

WebClient wc = new WebClient(); 
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); 
byte[] responseArray = wc.UploadData("URL_TO_POST", System.Text.Encoding.Default.GetBytes("param1_name=param1_value&param2_name=param2_value")); 
string responseText = System.Text.Encoding.ASCII.GetString(responseArray); 
+0

我記錄了我希望如何工作。 – 2011-12-19 12:57:25

+1

我編輯了答案 – 2011-12-19 13:57:31

+0

太棒了。我怎樣才能使用它作爲WebClient的UploadValues函數的等價物? – 2011-12-19 18:38:07

2

請求的編碼是由客戶決定 - 瀏覽器,jQuery的阿賈克斯(),或某些應用程序的調用。你可以做的唯一一件關於請求編碼的事情是,希望執行調用/請求的客戶端能夠正確地告訴服務器關於其編碼的正確性。

+0

我記錄了我希望如何工作。 – 2011-12-19 12:56:49

+0

您提供的鏈接僅指定**假定的**編碼,用於客戶端不告訴您提供何種編碼。它仍然是一個事實,它是**客戶端**提供的。此外,你需要解決什麼問題? – 2011-12-19 13:11:46