c# - ASP.NET C# Repeater - 如何在没有 Javascript 的情况下将信息传回服务器?

标签 c# javascript asp.net repeater

我正在学习 C# 并致力于我的第一个 ASP.Net 电子商务网站。

我有以下转发器:

<asp:Repeater ID="Cartridges" runat="server" OnItemCommand="Cartridges_ItemCommand">
  <ItemTemplate>                            
       <asp:LinkButton ID="buy" runat="server" CommandName="AddtoCart" CommandArgument=<%#Eval("cartID") %> Text="Buy"></asp:LinkButton>
  </ItemTemplate>

但是,当呈现代码时,转发器会生成 JavaScript 以回发,如果用户关闭了 JavaScript,这在填充购物车时是不好的!

<div class="wrap-cart">
 <div class="cartbuy"><a id="ContentPlaceHolder1_Cartridges_buy_0" href="javascript:__doPostBack(&#39;ctl00$ContentPlaceHolder1$Cartridges$ctl00$buy&#39;,&#39;&#39;)">Buy</a></div>
 <div class="cartimg"><a href="url.html" class="productsurl"><img src="pic/epson-comp-set50.jpg" alt="product" /></a></div>
 <div class="carttext">
       <p class="cartdesc"><a href="url.html" class="productsurl"><span class="homeprinters">product</span></a></p>
       <p class="cartprice">£x.xx</p>
 </div>

我只想将 cartID 传递给数据表。有没有办法让 JavaScript 完全不参与?

为了完整性,这里是我的代码:

protected void Cartridges_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    cartidtest.Text = "added";
    if (e.CommandName == "AddtoCart")
    {
        string varCartID = (e.CommandArgument).ToString();

        //more code here
    }
}

最佳答案

当然,你可以通过QueryString传递选中的ItemID

首先,生成一个这样的 anchor 标签:

<a href="NextCheckoutStep.aspx?ItemID=45">AddToCart</a>

这可以在 ItemTemplate 中完成:

<a href='<%# "NextCheckoutStep.aspx?ItemID=" + Eval("ItemID").ToString() %>'>AddToCart</a>

最后,在 NextCheckoutStep.aspx 中,访问:

Request.QueryString["ItemID"]

注意事项

  • 您可以将信息传回同一页面。只需将 NextCheckoutStep.aspx 替换为 CurrentCheckoutStep.aspx。您只需要将一些路由代码放入您的页面加载(或初始化)处理程序(使用 postback = false)以对由此方法创建的各种页面状态使用react。有时状态图有助于使用此设计。
  • 确保 100% 清理您的查询字符串读取,因为恶意用户会尝试在查询字符串中放入恶意值。
  • 您不必使用 QueryString,您也可以使用 HTTP POST collection ;但是,您也需要在这里进行清理,因为您永远不能相信来自客户端的输入。

关于c# - ASP.NET C# Repeater - 如何在没有 Javascript 的情况下将信息传回服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317544/

相关文章:

javascript - 在链接按钮 Telerik 上从服务器端调用 javascript

c# - 如何在 Silverlight 中为 ObservableCollection<T> 创建 CollectionView

c# - 如何隐藏/显示按钮 C#

javascript - jQuery 在模态中给出未定义的值

javascript - insertAdjacentHTML 后,即使启用滚动,部分元素也会显示,如何避免覆盖?

javascript - 从(邪恶的)feedly 导出 "saved for later"

c# - 如何判断用户访问的是 "/Default.aspx"还是 "/"

asp.net - 这是企图破坏我的 ASP.Net 站点的安全吗?

c# - 在 C# 中监听端口(不是 TCP 端口)

c# - 为连续日期选择最近的时间