asp.net 表单字段在引导模式中返回空

Sha*_*sor 5 javascript asp.net jquery twitter-bootstrap

我正在尝试在引导模式中提交一个 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>
Run Code Online (Sandbox Code Playgroud)

后面的代码:

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));
}
Run Code Online (Sandbox Code Playgroud)

rob*_*rus 1

模式不会影响发送到服务器的值。<form>但是,您正在模式中手动指定标签。我假设在您发布的标记之上或您的母版页中有一个<form runat="server">地方,您可能所做的就是意外地将一个表单嵌套在一个表单中。

删除模式内的表单标签,值应该正确保存。

评论后编辑:

确保附加后</form>与初始标签匹配的结束标签包围模态。<form runat="server>

其他潜在原因:

Page_Load 事件后面的代码不会设置modaltbadname.Text属性,除非它像这样包装:

if(!Page.IsPostBack)
{
     modaltbadname.Text = "value";
}
Run Code Online (Sandbox Code Playgroud)

检查OnClientClick="savevariables()"函数在提交到服务器之前不会更改值。

  • 在表单中移动模式的修复位于http://stackoverflow.com/questions/19184002/textboxes-are-empty-on-postback-with-bootstrap-modal-asp-net (3认同)