2014-03-02 62 views
0

我無法獲取頁面提交到我的頁面的值。沒有從頁面獲取變量...提交到數據庫

表單可能有點令人困惑,但基本上在頁面加載時顯示內容......如果用戶在登錄時顯示編輯按鈕,他們可以點擊它將視圖更改爲我可以編輯的表單這一頁。

然後他們點擊保存按鈕,然後將保存按鈕提交到數據庫。

這是我提交的表單。

<asp:Content ID="Content4" ContentPlaceHolderID="Title" Runat="Server"> 
    <asp:MultiView ID="TitleLanguage" runat="server"> 
       <asp:View ID="EnglishT" runat="server"><asp:Label ID="en_title" runat="server"/></asp:View> 
       <asp:View ID="FrenchT" runat="server"><asp:Label ID="fr_title" runat="server"/></asp:View> 
     <asp:View ID="EditT" runat="server"> 
        <asp:TextBox ID="Edit_EnglishT" runat="server" /> 
        <asp:TextBox ID="Edit_FrenchT" runat="server" /> 
     </asp:View> 
     </asp:MultiView> 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="PageContent" Runat="Server"> 
    <asp:LoginView runat="server" ID="EditLoginView"><LoggedInTemplate><div id="logged"> 
     <asp:Button ID="EditButton" runat="server" OnClick="btnEdit_Click" Text="Edit Page" CssClass="loggedbutton" PostBackUrl="~/page.aspx"/> 
     <asp:Button ID="SaveButton" runat="server" OnClick="btnSave_Click" visible="false" Text="Save" CssClass="loggedbutton" PostBackUrl="~/page.aspx" UseSubmitBehavior="true" /> 
    </div> 
</LoggedInTemplate></asp:LoginView> 
    <asp:MultiView ID="LanguageView" runat="server"> 
       <asp:View ID="English" runat="server"><asp:Label ID="en_content" runat="server"/></asp:View> 
       <asp:View ID="French" runat="server"><asp:Label ID="fr_content" runat="server"/></asp:View> 
     <asp:View ID="Edit" runat="server"> 
<h1>English Page</h1> 
        <asp:TextBox ID="Edit_English" runat="server" TextMode="MultiLine" Height="400px" /> 
<h1>French Page</h1> 
        <asp:TextBox ID="Edit_French" runat="server" TextMode="MultiLine" Height="400px" /> 
     </asp:View> 
    </asp:MultiView> 
</asp:Content> 

這是我用來獲取變量的代碼。

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    Button EditButton = (Button)EditLoginView.FindControl("EditButton"); 
    Button SaveButton = (Button)EditLoginView.FindControl("SaveButton"); 



     //update the file in the database 
    String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["randolphConnectionString"].ConnectionString; 
using(SqlConnection con = new SqlConnection(strConnString)) 
using(SqlCommand cmd = con.CreateCommand()) 
{ 
     string strQuery = " UPDATE pages SET en_content = @en_Content, fr_Content = @fr_content, [email protected]_title, [email protected]_title, [email protected]_update WHERE link_title = @link"; 
      cmd.CommandText= strQuery; 
      cmd.Parameters.Add("@en_title", SqlDbType.VarChar).Value = Edit_EnglishT.Text; 
      cmd.Parameters.Add("@fr_title", SqlDbType.VarChar).Value = Edit_FrenchT.Text; 
      cmd.Parameters.Add("@en_content", SqlDbType.VarChar).Value = Edit_English.Text; 
      cmd.Parameters.Add("@fr_content", SqlDbType.VarChar).Value = Edit_French.Text; 
      cmd.Parameters.Add("@last_update", SqlDbType.DateTime).Value = DateTime.Now; 
      cmd.Parameters.Add("@link", SqlDbType.VarChar).Value = linktitle; 
      cmd.Connection.Open(); 
      cmd.ExecuteNonQuery(); 
     TitleLanguage.ActiveViewIndex = 0; 
     LanguageView.ActiveViewIndex = 0; 
     EditButton.Visible = true; 
     SaveButton.Visible = false; 
     loadpage(); 

} 

我是新來asp.net所以我試圖用我所知道的關於ASP經典拉......基本上我缺少的是的request.form部分...任何幫助會很好!

+0

你正在收到什麼錯誤? –

+0

沒有錯誤。 btnSave_Click沒有收到任何變量。當我用一個靜態字符串「測試」數據庫更新替換Edit_EnglishT.Text和Parameters部分中的所有其他值時。 – trowse

回答

0

想通了!當我調用linktitle變量時,它並不存在,因爲即使我在刷新頁面時將其聲明爲公共變量,它將擦除該變量。

通過將信息放置在隱藏字段中解決了這個問題...我確信有另一種方法可以做到這一點,但我無法弄清楚如何實現。