1

我正在尝试Byte[]通过将 View 中的字符串转换为控制器来发送@Html.ActionLink。当我点击ActionLink它时,每次都会抛出异常。我在这里附上代码。

例外

在此处输入图像描述

操作点击后的 URL

  http://localhost:55253/Member/Create?customerContactNumber=0439349
&committeeId=AAAAAAAADLc%3D

查看代码

    @using VolunteerPoints.BootstrapSupport
    @model Tuple<VolunteerPoints.Models.Contact, IEnumerable<VolunteerPoints.Data.Committee>>

    @{
        ViewBag.Title = "SearchResults";
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

    <h2>Activity Search Results</h2>
    <table id="Activitieslist" class="table table-striped table-bordered table-hover .table-condensed">
        <thead>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.Item2.GetEnumerator().Current.Committee_Name)
                </th>

                <th>
                    @Html.DisplayNameFor(model => model.Item2.GetEnumerator().Current.Committee_Type)
                </th>

                <th></th>
            </tr>
        </thead>
        @foreach (var model in Model.Item2)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => model.Committee_Name)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => model.Committee_Type)
                </td>

                <td>
                    <div>
                        <div>
                            @Html.ActionLink("Select", "Create","Member", new 

{customerContactNumber = Model.Item1.Number, committeeId = 
Convert.ToBase64String(model.Committee_Id) }, new { @class = "btn btn-primary" })
                        </div>
                    </div>
                </td>
            </tr>
        }

    </table>

    @section Scripts {
              @Styles.Render("~/Content/DataTables/css")
            @Scripts.Render("~/bundles/DataTables") 

        <script type="text/JavaScript">
            $(document).ready(function () {

                $('#Activitieslist').dataTable({
                    "bSort": true,
                    "bPaginate": false,
                    "bAutoWidth": false,
                });

            });
        </script>
    }
4

2 回答 2

2

那么这部分网址:

AAAAAAAADLc%3D

应解码为

AAAAAAAADLc=

...此时长度是 4 的倍数,最后有完全合理的填充。

所以我怀疑问题是如何/是否执行解码。

(附带说明:byte[]ID 是一种非常不寻常的表示。你真的需要这样做吗?)

于 2013-03-25T13:58:42.913 回答
1

尝试更改代码部分:

committeeId = Convert.ToBase64String(model.Committee_Id)

committeeId = HttpServerUtility.UrlTokenEncode(model.Committee_Id)

这将提供对 URL 更友好的加密字符串,从而避免 URL 中可能导致错误的字符。

希望这对你有帮助 James123;

于 2013-09-30T18:35:54.097 回答