如何在asp.net中从protected方法声明公共变量?

时间:2014-03-27 09:24:21

标签: asp.net

我的服务器上有文件夹中的图像数据库。要显示此图像,我正在使用DataList控件。 ItemTemplate还包含一个LinkBut​​ton

<asp:LinkButton ID="wybierzZdjecieBtn" OnClick="choosePhotoButton_Click" CommandArgument='<%#Eval("PhotoLinkAddress")%>' CssClass="wybierzZdjecieButton" runat="server">Choose photo</asp:LinkButton>

要从LinkBut​​ton CommandArgument接收值,我正在使用此方法:

protected void choosePhotoButton_Click(object sender, EventArgs e)
{
    LinkButton button = (LinkButton)(sender);
    string photoLinkAddressVar = button.CommandArgument.ToString();
    Response.Write(PhotoLinkAddressVar);
}

这很好,没问题。但这不是我想要达到的目标。我的意图是发送这个变量&#34; PhotoLinkAddressVar&#34;这种方法:

protected void addNewNews_Click(object sender, EventArgs e)
{
    string trescStatus = "czeka";
    string autor = Session["userName"].ToString();
    DateTime data = DateTime.Now;
    string dataFormat = "";
    dataFormat = data.ToString("dd/MM/yyyy H:mm");

    string CS = ConfigurationManager.ConnectionStrings["wiadomosciConnection"].ConnectionString;
    using (SqlConnection con = new SqlConnection(CS))
    {
        con.Open();
        string dodaj = "Insert into News (TytulNews, TrescNews, Autor, Data, Kategoria, Dotyczy, PhotoLinkAddress, Status) values (@TytulNews, @TrescNews, @Autor, @Data, @Kategoria, @Dotyczy, @PhotoLinkAddress, @Status)";
        SqlCommand com = new SqlCommand(dodaj, con);
        com.Parameters.AddWithValue("@TytulNews", tytulNewsTextBox.Text);
        com.Parameters.AddWithValue("@TrescNews", trescTextBox.Text);
        com.Parameters.AddWithValue("@Autor", autor);
        com.Parameters.AddWithValue("@Data", dataFormat);
        com.Parameters.AddWithValue("@Kategoria", kategoria.SelectedValue.ToString());
        com.Parameters.AddWithValue("@Dotyczy", dotyczy.SelectedValue.ToString());
        com.Parameters.AddWithValue("@PhotoLinkAddress", photoLinkAddressVar);
        com.Parameters.AddWithValue("@Status", trescStatus);
        com.ExecuteNonQuery();
    }
}

用户必须在按下&#34;添加新闻&#34;之前选择照片,因为如果他不这样做,他将收到错误消息。我不知道,怎么做。我试图在PageLoad之前声明一些公共变量,并做这样的事情:

protected void choosePhotoButtonButton_Click(object sender, EventArgs e)
{
    LinkButton button = (LinkButton)(sender);
    photoLinkAddressVar = button.CommandArgument.ToString();

}

但该方法不会声明变量。你有什么想法,我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:0)

您也可以使用ViewState

protected void choosePhotoButton_Click(object sender, EventArgs e)
{
    LinkButton button = (LinkButton)(sender);
    string photoLinkAddressVar = button.CommandArgument.ToString();
    View["photoLinkAddressVar"]=photoLinkAddressVar;
    Response.Write(PhotoLinkAddressVar);
}

然后在addNewNews_Click方法中,您可以通过以下方式检索此值:

com.Parameters.AddWithValue("@PhotoLinkAddress", ViewState["photoLinkAddressVar"]);

有关ViewState的进一步说明,请查看here