2010-11-15 75 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)