2014-03-29 39 views
4

我想提交一個引導模式內的asp.net表單。由於某種原因,所有的字段都會返回空白(如果我嘗試使用模式外的字段,它會很好)。我已經看到一些關於它的帖子,但沒有解決方案解決了我的問題。asp.net表單字段在引導模式下返回空值

希望你對此有所幫助。先謝謝了!

  <div class="modal fade" id="myModalForm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static"> 
     <div class="modal-dialog"> 
      <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
       <h4 class="modal-title" id="myModalLabel">EDIT ADVERTISMENT</h4> 
      </div> 
      <div class="modal-body"> 

      <form id="updateadform" method="post" action="#" class="basic-form" > 
       <label for="title">Ad Name</label> 
       <asp:TextBox ID="modaltbadname" runat="server" placeholder="Ad Name"></asp:TextBox> 
       <label for="title">Promotional Text</label> 
       <asp:TextBox id="modaltbtbpromotional" TextMode="multiline" Rows="3" runat="server" /> 
       <label for="description">Page</label> 
       <asp:DropDownList ID="modalddpage" placeholder="Insert the page the ad refers to" runat="server"></asp:DropDownList> 
       <label for="finish-date">Start Date</label> 
       <asp:TextBox ID="modaltbstartdate" runat="server" placeholder="20/01/2014" CssClass="datepicker" onchange="Page_ClientValidate();"></asp:TextBox> 
       <label for="finish-date">End Date</label> 
       <asp:TextBox ID="modaltbenddate" runat="server" placeholder="20/01/2014" CssClass="datepicker" onchange="Page_ClientValidate();"></asp:TextBox> 
        <asp:CompareValidator id="CompareValidator1" runat="server" ControlToCompare="modaltbstartdate" cultureinvariantvalues="true" display="Dynamic" enableclientscript="true" ControlToValidate="modaltbenddate" ErrorMessage="Start date must be earlier than finish date" type="Date" setfocusonerror="true" Operator="GreaterThanEqual" text="Start date must be earlier than finish date"></asp:CompareValidator> 

       <div class="right-side"> 
       </div> 

       <div class="clearfix"></div> 

      </form> 

      </div> 
      <div class="modal-footer"> 
       <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       <asp:Button type="button" ID="savead" CssClass="btn btn-primary" runat="server" Text="Save Changes" OnClick="savead_Click" OnClientClick="savevariables()" UseSubmitBehavior="false" /> 
      </div> 
      </div> 
     </div> 
     </div> 

後面的代碼:

protected void savead_Click(object sender, EventArgs e) 
{ 
    string x = idtoupdate.Value; // this field is outside of the modal - returns its correct value 
    string y = modaltbadname.Text; //returns "" 

    DB.UpdateAd(modaltbadname.Text, modaltbtbpromotional.Text, modalddpage.SelectedValue, modaltbstartdate.Text, modaltbenddate.Text, int.Parse(idtoupdate.Value)); 
} 

回答

1

模態不會影響發送到服務器的值。但是,您手動在模態中指定<form>標記。我假設你已經發布的標記之上或者你的主頁面上有一個<form runat="server">的地方,你可能做了什麼是意外地在窗體中嵌套了一個表單。

刪除模態內的表格標籤,值應正確保存。註釋後

編輯:

確保它匹配初始<form runat="server>標籤包圍模態它所附後閉合</form>標籤。

其他可能的原因:

你背後Page_Load事件代碼沒有設置modaltbadname.Text財產,除非它被包裹,像這樣:

if(!Page.IsPostBack) 
{ 
    modaltbadname.Text = "value"; 
} 

檢查OnClientClick="savevariables()"之前,它是功能不改變價值提交給服務器。

+0

感謝您的回答!你對我的

是正確的,但我認爲問題在於模態被追加到主體,這意味着它不在我的ASP表單中,這就是爲什麼值沒有被捕獲。試圖刪除表單,但沒有奏效。 –

+0

請參閱編輯以獲取更多建議。 – robasaurus

+0

再次感謝!我嘗試添加isPostback,但是當我調試時它不會到達那裏。也 - OnClientClick函數是一個測試函數,看看我是否在客戶端獲得這些變量,並且不刪除它們。無論如何,我刪除它,它仍然不工作:( –