javascript - 使用javascript在包含特殊字符的URL中传递参数

标签 javascript c# asp.net-mvc asp.net-mvc-3

<分区>

您好,我正在尝试在我的 Controller 中调用一个包含参数的操作结果,但是只要其中一个参数包含 # 符号(特殊字符),字符串参数不包含 # sing in 参数,接下来所有参数都设置为 null。

以下是我调用操作结果的 java 脚本。

    <script type="text/javascript">
        $(document).ready(function () {
            $('#btnExport').unbind().click(function () {
                var url = @Url.Content("~/BankStatement/ExportBankStatementSummary") +
                    "?legalName=" + '@ViewBag.LegalName' +
                    "&dba=" + '@ViewBag.DBA' + 
                    "&contactPerson=" + '@ViewBag.ContactPerson' +
                    "&address=" + '@ViewBag.Address' + 
                    "&period=" + '@ViewBag.Period' +
                    "&totalHeading=" + '@ViewBag.TotalHeading';
                window.location = url;
            });
        });
    </script>

这是在此 java 脚本中调用的操作结果

public ActionResult ExportBankStatementSummary(string legalName, string dba, 
                                               string contactPerson, string address, 
                                               string period, string totalHeading)
    {
        ViewBag.LegalName = legalName;
        ViewBag.DBA = dba;
        ViewBag.ContactPerson = contactPerson;
        ViewBag.Address = address;
        ViewBag.Period = period;
        ViewBag.TotalHeading = totalHeading;

        ...

问题在于,在操作结果参数中,只要任何参数包含任何特殊字符(在本例中为#),那么该参数和下一个参数就会变为空。

例如,如果地址是“Street # 2”,则参数地址变为“Street”,下一个参数 period 和 totalHeading 变为空。

我们将不胜感激任何帮助。

提前致谢。

[我不同意这个问题的重复,因为标记重复的问题已经详细讨论了,详细的对话涵盖了这个问题的答案,但实际问题与这个问题完全不同。]

最佳答案

你需要encodeURIComponent()

The encodeURIComponent() method encodes a Uniform Resource Identifier (URI) component by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will only be four escape sequences for characters composed of two "surrogate" characters).

示例

 var url = @Url.Content("~/BankStatement/ExportBankStatementSummary") +
                "?legalName=" + encodeURIComponent('@ViewBag.LegalName')

关于javascript - 使用javascript在包含特殊字符的URL中传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32690413/

相关文章:

c# - 如何在 C# 中比较两个实例的内容?

c# - 在 WP7 中绑定(bind) ToggleButton 的 IsChecked 属性

c# - 使用从 EF 实体派生的 DTO 实体执行插入

javascript - 如何在 AngularJS 中实现服务器端搜索框

javascript - 如何将 2 个带有对象的数组重组为嵌套数组?

javascript - CSS 未加载到 Iframe 花式框中

javascript - Bootstrap 表单中日期和时间字段的 jQuery 验证

c# - 使用 Roslyn 解析运行时生成类型的 lambda 表达式

asp.net - IIS7 MVC 路由不工作

javascript - jquery在创建动态dom元素时添加数据属性