2010-11-15 76 views
3

我目前正在嘗試將ASP.NET MVC2應用程序轉換爲ASP.NET MVC3剃鬚刀。我有很多自定義HTML輔助方法,它呈現HTML輸出,像下面的一個,這使得一個按鈕,一些標記:ASP.NET MVC3剃刀問題與自定義HTML助手中的國際字符

StringBuilder sb = new StringBuilder("<input type='submit' id='") 
      .Append(buttonId) 
      .Append("' name='") 
      .Append(buttonId) 
      .Append("' value='") 
      .Append(buttonValue) 
      .AppendLine("' class='myclass1 myclass2' />"); 
return MvcHtmlString.Create(sb.ToString()); 

當buttonValue包含國際字符,如e或E,按鈕的文字得到渲染錯誤,我想某種編碼發生...

例如。 ë更改爲ë

我知道,MVC3爲其html幫助程序使用了某種模板系統,但由於我有很多自己的幫助程序,因此需要花費很多時間才能瞭解此內容並更改所有內容我目前的習慣幫手。

+0

顯然,默認MVC3 HTML輔助來自同一個問題的困擾: @ Html.TextBox( 「測試」, 「Kopiëren」) 也將輸出錯誤的結果。 – rekna 2010-11-16 14:16:58

回答

0

問題解決了,顯然它與cshtml文件的編碼有關,cshtml文件是用一個小型的c#程序生成的,它嘗試將webform語法轉換爲razor語法。在編寫生成的cshtml文件時,如果忘記指定編碼參數,導致與原始aspx或ascx文件相比,cshtml文件的編碼不同。我解決它通過改變

File.WriteAllText(filename,text) 

File.WriteAllText(filename, text,Encoding.Default)