c# - 如何从asp.net中的javascript调用服务器端代码?

标签 c# javascript asp.net

我有像这样的中继器控件

<asp:Repeater ID="repeaterCategoryList" runat="server" 
                onitemcommand="repeaterCategoryList_ItemCommand">
                <ItemTemplate>
                        <td class="center">
                            <asp:Button ID="buttonDelete" runat="server" CssClass="btn btn-primary" CommandName="Delete" Text="Delete" 
                                CommandArgument='<%# Eval("CategoryId") %>'/>
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:Repeater>

我的页面后面的代码如下所示;

protected void repeaterCategoryList_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {
         //my server side logic here
    }
}

我的 .aspx 文件中的 javascript 代码如下所示:

<script>
    $(function () {
        $('#buttonDelete').live('click', function (e) {
            e.preventDefault();
            $.alert({
                type: 'confirm'
                , title: 'Alert'
                , text: '<p>Are you sure, you want to delete this category</p>'
                , callback: function () {

                    // call server side here
                }
            });
        });

    });
</script>

如何在 javascrpt 中调用转发器删除命令逻辑? 有没有其他方法可以做到这一点?

最佳答案

您可以使用转发器的 ItemDatabound 属性将 Javascript 函数绑定(bind)到 Dalete 按钮 Onclick 事件,如下所示...

代码隐藏:-

 void Repeater1_ItemDataBound(Object Sender, RepeaterItemEventArgs e)  
 {     
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
      {
        int IdToBeDeleted=((Label)e.Item.FindControl("idFieldControl")).Text;     
        Button Btn= (Button)e.Item.FindControl("buttonDelete");     
        Btn.Attributes.Add("onclick","return ConfirmDelete('"+IdToBeDeleted+"')");    
      }

 } 

Javascript:

<script>  
  function ConfirmDelete(var idVal) 
  {    
     if(Confirm("Are you sure, you want to delete this category?")) 
      {
         var xmlhttp;
         if (window.XMLHttpRequest)
         {// code for IE7+, Firefox, Chrome, Opera, Safari
             xmlhttp=new XMLHttpRequest();
         }
         else
         {// code for IE6, IE5
             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }


         xmlhttp.onreadystatechange=function()
         {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
               {
                 alert(xmlhttp.responseText);
               }
         }
          xmlhttp.open("POST","DeletePage.aspx?id="+idVal,true);  
          xmlhttp.Send();
      }
  } 
</script> 

DeletePage.aspx:

function pageLoad(sender, eventArgs) 
{ 
    if(!IsPostBack)
     {
       int IdToBeDeleted=Request.QueryString["id"];
       Write Your Delete Code Here...
       if delete successful...Response.Write("Delete Successful");
     }
} 

关于c# - 如何从asp.net中的javascript调用服务器端代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11880269/

相关文章:

javascript - 如何使用React从Fantasy Premier League检索授权信息

javascript - document.getElementById() 返回 null,尽管在 $(document).ready 中被调用

jquery - 禁用 Jquery DatePicker 的周五和周六周末

c# - 无法启动服务挂载被拒绝 '/usr/local/share/dotnet/sdk/NuGetFallbackFolder\r\n' 不是来自 macos X 的共享并且 docker 不知道

c# - 如何在 StackExchange.Redis 中指定无穷大?

c# - 如何将 RichTextBox 滚动到底部?

javascript - 如何在页面加载时设置 jquery 切换关闭?

c# - 使用 Web 服务 HTTP Post

javascript - Tempdata 未显示在 View ASP.NET C# 中的图像 src 中

c# - 从数据库编码 URL 查询字符串