我目前正在尝试将ASP.NET MVC2应用程序转换为ASP.NET MVC3 razor。我有很多自定义的Html辅助方法,它们渲染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包含é或ë等国际字符时,按钮的文本会被渲染错误,我想会发生某种编码......
EG。 ë改为ë
我知道,MVC3为其html助手使用某种模板系统,但由于我有很多自己的助手,因此需要花费很多时间来了解这一点并更改我当前的所有自定义助手。
答案 0 :(得分:0)
问题解决了,显然它与cshtml文件的编码有关,cshtml文件是用一个小的c#程序生成的,它试图将webform语法转换为razor语法。在编写生成的cshtml文件时,如果忘记指定编码参数,则导致与原始aspx或ascx文件相比,cshtml文件的编码不同。我通过改变
解决了这个问题File.WriteAllText(filename,text)
到
File.WriteAllText(filename, text,Encoding.Default)