关于c#:使用javascript在包含特殊字符的URL中传递参数

Passing Parameters in URL containing special characters using javascript

本问题已经有最佳答案,请猛点这里访问。

嗨,我正试图在控制器中调用包含参数的操作结果,但每当其中一个参数包含符号(特殊字符)时,字符串参数不包括sing-in参数,接下来所有参数都设置为空。

下面是我的Java脚本,通过它我调用了我的动作结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
    <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;
            });
        });

这是Java脚本中调用的动作结果。

1
2
3
4
5
6
7
8
9
10
11
12
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变为空。

任何帮助都将不胜感激。

事先谢谢。

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


你需要EDOCX1[0]

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).

例子

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