Зашифровать строку запроса для DataNavigateUrlFormatString в Gridview - PullRequest
0 голосов
/ 28 августа 2018

Я хочу зашифровать строку запроса, которая формируется с помощью asp.net Gridview.

Ниже мой код

<asp:GridView ID="gvCreatedCRList" runat="server" AutoGenerateColumns="False" CssClass="table table-bordered table-hover"
                ShowHeaderWhenEmpty="True" PageSize="10" AllowPaging="true" EmptyDataText="No data to display.">
                <Columns>
                    <asp:HyperLinkField DataTextField="CHANGEREQUESTNUMBER" ItemStyle-CssClass="GridRow"
                        HeaderText="Change Request No" DataNavigateUrlFields="CHANGEREQUESTID" DataNavigateUrlFormatString="ChangeRequestDetails.aspx?ID={0}"
                        Text="CR No" Target="_blank" ItemStyle-Width="11%" />
                    <asp:BoundField DataField="DESCRIPTION" ItemStyle-CssClass="GridRow" HeaderText="Description"
                        ReadOnly="True" ItemStyle-Width="15%" />
                    <asp:BoundField DataField="STATENAME" ItemStyle-CssClass="GridRow" HeaderText="State"
                        ReadOnly="True" SortExpression="State" ItemStyle-Width="12%" />
                    <asp:BoundField DataField="CITYNAME" ItemStyle-CssClass="GridRow" HeaderText="City"
                        ReadOnly="True" SortExpression="City" ItemStyle-Width="7%" />
                    <asp:BoundField DataField="CATEGORY" ItemStyle-CssClass="GridRow" HeaderText="Category"
                        ReadOnly="True" SortExpression="Category" ItemStyle-Width="7%" />
                    <asp:BoundField DataField="CHANGETYPE" ItemStyle-CssClass="GridRow" HeaderText="Type"
                        ReadOnly="True" SortExpression="Type" ItemStyle-Width="15%" />
                    <asp:BoundField DataField="OPENCLOSED" ItemStyle-CssClass="GridRow" HeaderText="Open/ Closed"
                        ReadOnly="True" ItemStyle-Width="4%" />
                    <asp:BoundField DataField="STATUS" ItemStyle-CssClass="GridRow" HeaderText="Detailed Status"
                        ReadOnly="True" ItemStyle-Width="15%" />
                    <asp:BoundField DataField="CREATEDON" ItemStyle-CssClass="GridRow" HeaderText="Creation Date"
                        ReadOnly="True" DataFormatString="{0:dd-MM-yyyy}" ItemStyle-Width="7%" />
                    <asp:BoundField DataField="LASTMODIFIEDON" ItemStyle-CssClass="GridRow" HeaderText="Last Modified Date"
                        ReadOnly="True" DataFormatString="{0:dd-MM-yyyy}" ItemStyle-Width="7%" />
                </Columns>
                <HeaderStyle BackColor="#C3C1C1" />
                <RowStyle HorizontalAlign="Left" />
                <PagerStyle CssClass="pagergrid" />
            </asp:GridView>

Я хочу зашифровать DataNavigateUrlFormatString="ChangeRequestDetails.aspx?ID={0}"

1 Ответ

0 голосов
/ 28 августа 2018

Сначала убедитесь, что вы уже создали метод, который возвращает string для целей шифрования / дешифрования. Метод должен быть доступен из синтаксиса привязки данных в разметке страницы:

public string ParseRequest(string id)
{
    // perform encryption/decryption here
}

Обратите внимание, что HyperLinkField не поддерживает привязку с помощью метода Eval(), необходимого для процесса шифрования / дешифрования (поскольку при этом будет выдано HyperLinkField без сообщения DataBinding ), вам необходимо используйте TemplateField и поместите в него HyperLink control. Затем вызовите метод шифрования / дешифрования внутри NavigateUrl с привязкой данных:

<asp:GridView ID="gvCreatedCRList" runat="server" AutoGenerateColumns="False" CssClass="table table-bordered table-hover"
    ShowHeaderWhenEmpty="True" PageSize="10" AllowPaging="true" EmptyDataText="No data to display.">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:HyperLink ID="CRNo" runat="server" 
                 NavigateUrl='<%# this.ResolveUrl(
                 string.Format("ChangeRequestDetails.aspx?ID={0}", ParseRequest(Eval("CHANGEREQUESTID").ToString()))) %>' 
                 Text="CR No" Target="_blank" ...>
                </asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>

        <%-- other BoundField columns --%>

    </Columns>

    <%-- other settings --%>
</asp:GridView>

Или используйте этот способ, если вы хотите зашифровать весь URL вместе со строкой запроса:

<asp:HyperLink ID="CRNo" runat="server" 
     NavigateUrl='<%# this.ResolveUrl(ParseRequest(Eval("REQUESTURL").ToString())) %>' Text="CR No" Target="_blank" ...>
</asp:HyperLink>
...