gpt4 book ai didi

c# - JavaScript 不会从 asp.net 中的 C# 代码进行回发

转载 作者:行者123 更新时间:2023-11-28 21:24:06 25 4
gpt4 key购买 nike

好的,成功让代码正常工作,没有错误,但当我点击 div 确认后,它不会发回帖子?:

<script type="text/javascript">
function confirm_delete(id){
if (confirm('Are you sure you want to delete?')) {
__doPostBack('DivClicked', id);
}
else {
return false;
}
}

隐藏代码:

public partial class UserProfileWall : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
//It is a postback so check if it was by div click (NOT WORKING because the javascript isnt posting back)
string target = Request["__EVENTTARGET"];
if (target == "DivClicked")
{
string id = Request["__EVENTARGUMENT"];
//Call my delete function passing record id
Response.Write(String.Format(id)); //just a test
}
}
string theUserId = Session["UserID"].ToString();
PopulateWallPosts(theUserId);
}
private void PopulateWallPosts(string userId)
{

using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;"))
{
cn.Open();
using (OdbcCommand cmd = new OdbcCommand("SELECT idWallPosting, wp.WallPostings, p.PicturePath FROM WallPosting wp LEFT JOIN User u ON u.UserID = wp.UserID LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE wp.UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
{
//("SELECT wp.WallPostings, p.PicturePath FROM WallPosting wp LEFT JOIN [User] u ON u.UserID = wp.UserID LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
using (OdbcDataReader reader = cmd.ExecuteReader())
{
test1.Controls.Clear();

while (reader.Read())
{

System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
div.Attributes["class"] = "test";


div.ID = String.Format("{0}", reader.GetString(0));
string id = Convert.ToString(div.ID);
//store the div id as a string
Image img = new Image();
img.ImageUrl = String.Format("{0}", reader.GetString(2));
img.AlternateText = "Test image";

div.Controls.Add(img);
div.Controls.Add(ParseControl(String.Format("&nbsp&nbsp&nbsp;" + "{0}", reader.GetString(1))));
div.Attributes.Add("onclick", "return confirm_delete(" + id + ");");
// send the div id to javascript
div.Style["clear"] = "both";
test1.Controls.Add(div);

}
}
}
}
}



protected void Button1_Click(object sender, EventArgs e)
{
string theUserId = Session["UserID"].ToString();
using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;"))
{
cn.Open();
using (OdbcCommand cmd = new OdbcCommand("INSERT INTO WallPosting (UserID, Wallpostings) VALUES (" + theUserId + ", '" + TextBox1.Text + "')", cn))
{
cmd.ExecuteNonQuery();
}
}
PopulateWallPosts(theUserId);
}
}

代码不执行回发的任何原因?

最佳答案

问题是因为 __doPostBack 未定义。它没有定义,因为您没有在页面上放置任何作为 IPostBackEventHandler 的控件,如 LinkBut​​ton 那样。

为了使 Page.IsPostBack 为 true,您必须:

  • 重新构建您的应用程序,以便实现一个可实现 IPostBackEventHandler 的控件,当然,将其放在您的页面上
  • 您在页面上放置了一个虚拟的 IPostBackEventHandler。一个什么都不做的人。就像LinkBut​​ton

无论哪种方式,ASP.NET都会在客户端定义__doPostBack函数,并且您的代码最终将回发

关于c# - JavaScript 不会从 asp.net 中的 C# 代码进行回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5494609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com