none
ASP.NET MVC3 Html.TextBox给onclick指定带参数的方法时的编码问题 RRS feed

  • 问题

  • 新建一个MVC3空白项目,添加一个HomeController,为Index方法添加一个视图,在视图中只写下一行代码:

    @Html.TextBox("txtEmail", "", new { onclick = "alert('abc')" })

    运行后,查看网页源代码,生成的HTML是这样的:

    <input id="txtEmailname="txtEmailonclick="alert(&#39;abc&#39;)type="textvalue="" />

    把'编码成了&#39;  这导致onclick方法直接失效。

    在别的电脑上测试生成的都是正确的结果,但在我电脑上生成的是上面的结果,这是不是MVC3的一个BUG?

    如果不是bug,那又是什么原因造成的呢?操作系统是正版windows 8 专业版,环境是Visual Studio Ultimate 2012,版本11.0.60610.01 Update 3

    2013年10月9日 15:45

答案

  • 你好noptune:

    我测试过了,我用IE11的确是会自动转码:

    不过我点击之后照样可以弹出对话框:

    如果你实在不行,建议你自己写一个脚本然后直接挂上名字,比如:

    @{
        Layout = null;
    }
     
    <!DOCTYPE html>
     
    <html>
    <head>
        <title>Index</title>
        <script>
            function Caller() {
                alert("OK");
            }
        </script>
    </head>
    <body>
        <div>
            @Html.TextBox("myName"string.Empty,new { onclick = "Caller()" });
        </div>
    </body>
    </html>

    Click For donating:Free Rice For the poor
    For spamming-sender issues, you can either report it at Microsoft Spamming Issue, or just find "Report Spam Here+Number" at Forum Issue;You can also find "Verify Your Account+Number" at "Forum Issue", where you can submit to be confirmed to paste links or images.
    For more things to talk about? StackOverFlow is your choice.

    • 已标记为答案 noptune 2013年10月11日 2:46
    2013年10月11日 2:24

全部回复

  • 你好,

    我建了一个类似的MVC3项目,测试了IE7以上的版本都是正常的,工作很好。这显然不是MVC3的一个BUG。

    你是否在windows 8系统中用记事本或其他工具打开过 Index.cshtml 文件,并且保存过。请尝试将Index.cshtml 文件 另存为原来的编码格式(在你系统下创建原始文件的编码格式).

    读这里了解更多信息:

    http://www.cnblogs.com/liuning8023/archive/2012/12/09/2810518.html

    2013年10月10日 6:47
  • 从没用除VS之外的任何工具打开过Index.cshtml文件,我新建一个项目,添加个controller,添加个视图后直接运行就是onclick="alert(&#39;abc&#39;)" 这样的结果,很无奈 但在别的电脑上是正常的
    2013年10月10日 8:08
  • 你好,

    我建了一个类似的MVC3项目,测试工作很好。看来不是MVC3的一个BUG。

    你有尝试在vs 内部自带的浏览器中查看嘛?

    你也可以尝试在本地的其他浏览器上看看,如果其他浏览器可以,你可能需要重新安装你的浏览器。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2013年10月11日 1:23
    版主
  • 你好noptune:

    我测试过了,我用IE11的确是会自动转码:

    不过我点击之后照样可以弹出对话框:

    如果你实在不行,建议你自己写一个脚本然后直接挂上名字,比如:

    @{
        Layout = null;
    }
     
    <!DOCTYPE html>
     
    <html>
    <head>
        <title>Index</title>
        <script>
            function Caller() {
                alert("OK");
            }
        </script>
    </head>
    <body>
        <div>
            @Html.TextBox("myName"string.Empty,new { onclick = "Caller()" });
        </div>
    </body>
    </html>

    Click For donating:Free Rice For the poor
    For spamming-sender issues, you can either report it at Microsoft Spamming Issue, or just find "Report Spam Here+Number" at Forum Issue;You can also find "Verify Your Account+Number" at "Forum Issue", where you can submit to be confirmed to paste links or images.
    For more things to talk about? StackOverFlow is your choice.

    • 已标记为答案 noptune 2013年10月11日 2:46
    2013年10月11日 2:24