0
안녕하세요, 지금 막 조금 붙어 있습니다. 포럼을 만들고 있는데, 코드에서 "threadID"를 얻는 것 같지 않습니다.이 기능이 필요합니다. 그런 다음 데이터베이스에 게시하십시오.리피터 내부의 레이블에서 ID 값을 가져옵니다.
"threadID"가 첫 번째 중계기에서 동적으로 생성되므로이 값을 얻기 위해 필요합니다.
"컴파일러 오류 메시지 : CS0103 : 현재 컨텍스트에 존재하지 않는 'threadID'이름"나는 브라우저에서이 오류를 얻고 순간
여기코드입니다 :
<h1>viewThread.aspx</h1>
<!-- THREAD TEXT STARTS --->
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1" EnableViewState="False">
<ItemTemplate>
<h2><%# Eval ("threadTitle") %></h2>
<!--- THIS THREAD ID NEEDS TO BE GENERATED DYNAMICALLY SO WE CAN THEN GRAB IT TO USE IN THE REPLY --->
<asp:Label ID="threadID" runat="server" Visible="false" Text='<%# Eval ("threadID") %>' />
<%# Eval ("threadText") %>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:VSTESTConnectionString %>"
SelectCommand="SELECT * FROM [threadCat&Thread] WHERE ([threadID] = @threadID)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="1" Name="threadID" QueryStringField="t"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<!-- THREAD TEXT ENDS --->
<!-- USER GENERATED REPLYS --->
<h2>Replys</h2>
<asp:Repeater ID="Repeater2" runat="server" DataSourceID="SqlDataSource2">
<ItemTemplate>
<%#Eval ("postText") %> <br />
Date Posted <%#Eval ("postCreated") %>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:VSTESTConnectionString %>"
SelectCommand="SELECT * FROM [posts] WHERE ([threadID] = @threadID)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="1" Name="threadID" QueryStringField="t"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<!-- USER GENERATED REPLYS ENDS --->
<!-- REPLY --->
<h2>post a reply</h2>
Userid<asp:TextBox ID="userID" runat="server" /><br />
<asp:TextBox ID="postTxt" TextMode="MultiLine" runat="server"></asp:TextBox><br />
<asp:Button ID="reply" runat="server" Text="Reply" onclick="reply_Click" />
<!-- REPLY ENDS --->
</asp:Content>
<h1>viewThread.aspx.cs</h1>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
public partial class viewThread : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void reply_Click(object sender, EventArgs e)
{
/* threadID is not showing in intellisense */
string thread = threadID.Text;
string user = userID.Text;
string reply = postTxt.Text;
string date = DateTime.Now.ToString();
int locked = 0;
SqlConnection sqlCon = new SqlConnection("Server =.\\SQLEXPRESS; Database =VSTEST; Trusted_Connection =True;");
SqlCommand sqlCom = new SqlCommand("INSERT INTO posts(threadID, postBy, postText, postCreated, postLocked) VALUES ('" + thread + "','" + user + "','" + reply + "','" + date + "','" + locked + "')", sqlCon);
try
{
sqlCon.Open();
sqlCom.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write("Brokies.... " + ex.ToString());
}
finally
{
sqlCon.Close();
Response.Redirect("/forums/Default.aspx");
}
}
}
이 viewstate가를 사용하여 문제를 해결 한 변화는 다음과 같습니다 :
public partial class viewThread : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["t"] != null && Request.QueryString["t"].ToString() != "")
{
ViewState["threadID"] = Request.QueryString["t"].ToString();
}
}
protected void reply_Click(object sender, EventArgs e)
{
string user = userID.Text;
string reply = postTxt.Text;
string date = DateTime.Now.ToString();
int locked = 0;
SqlConnection sqlCon = new SqlConnection("Server =.\\SQLEXPRESS; Database =VSTEST; Trusted_Connection =True;");
SqlCommand sqlCom = new SqlCommand("INSERT INTO posts(threadID, postBy, postText, postCreated, postLocked) VALUES ('" + ViewState["threadID"].ToString() + "','" + user + "','" + reply + "','" + date + "','" + locked + "')", sqlCon);
try
{
sqlCon.Open();
sqlCom.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write("Brokies.... " + ex.ToString());
}
finally
{
sqlCon.Close();
Response.Redirect("/forums/Default.aspx");
}
}
}
헤이 바로 뒤에 코드에서, 필자는 여전히 같은 오류가 있음을 시도 – noscript
수정 된 답변보기 –
안녕하세요, 그걸로부터 행운을 얻고 싶지 않습니다, 컴파일러 오류 메시지 : CS0103 : '스레드'이름이 현재 컨텍스트에 존재하지 않습니다. 그것은 SQL 문을 가리키고 있으므로 값이 표시되지 않습니다. – noscript