会话值在 DetailsView 的 SqlDataSource 的 SelectCommand 中不起作用

Session value not working in SelectCommand of SqlDataSource for DetailsView

提问人:simo 提问时间:8/12/2023 最后编辑:simo 更新时间:8/16/2023 访问量:35

问:

我在 .net 中有一个 Web 应用程序并使用 DetailsView。 im 使用 SqlDataSource 控制此 DetailsView。我用jQuery设置了一个会话。

     <script >
         var baseUrl = (window.location).href;
         var clubid = baseUrl.substring(baseUrl.lastIndexOf('=') + 1);
         sessionStorage.setItem("se", "13801");
         var ses = sessionStorage.getItem("se");
     </script>

DetailsView 字段:

<Fields>
    <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" SortExpression="id" />
    <asp:BoundField DataField="name" HeaderText="name"
        SortExpression="name" />
    <asp:BoundField DataField="saltasis" HeaderText="saltasis" SortExpression="saltasis" />
    <asp:CommandField />
    <asp:CommandField ShowEditButton="True" />
    <asp:CommandField ShowInsertButton="True" />
    <asp:CommandField ShowDeleteButton="True" />
</Fields>

和 SQLDATASOURCEID :

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:sina1ConnectionString %>" 
    SelectCommand="SELECT * FROM [club] WHERE saltasis = @saltasis">
    <SelectParameters>
    <asp:SessionParameter Name="?" SessionField="?" Type="string" />
    </SelectParameters>

</asp:SqlDataSource>

如何在 DetailsView 的 SqlDataSource 的 SelectCommand 中使用会话作为值。

jquery SQL asp.net Web 应用程序 会话变量

评论


答:

0赞 mehdi Rahimy 8/12/2023 #1

使用 javascript 将会话值存储在隐藏字段中。注意,如果使用母版页,隐藏字段的名称如下:

document.getElementById('ContentPlaceHolder1_hiddenfield1').value = "session_value";

然后,您可以使用隐藏字段中存储的会话值

0赞 srame 8/12/2023 #2

嗨,在您的示例中,我只向您展示了将会话值保存在您的内部,但您没有在 html 表单或 ajax 中作为 POST 或 GET 过去。因此,您需要在控制器中捕获 URL:例如,此 URL https://domain.eg/ControllerName/ActionName?se=13801sessionStorage(window.location).href

[httpGet]
public void ActionName(string se)
{

  var sessionParams = se;
  -- do what you want with that...

}

评论

0赞 simo 8/13/2023
我如何将此源视为选择命令?
0赞 srame 8/13/2023
过去你可以做这个 Request.QueryString['se'] 看看这个 stackoverflow.com/questions/13732975/...