Twitter bootstrap 3 单击引导单选按钮时提交表单

Twitter bootstrap 3 单击引导单选按钮时提交表单,twitter-bootstrap-3,asp.net-core-mvc,asp.net-core-2.0,Twitter Bootstrap 3,Asp.net Core Mvc,Asp.net Core 2.0,我有一个带有单选按钮组的表单: <form name="search" class="form-inline" asp-controller="controller" asp-action="action" method="get"> <div class="btn-group" data-toggle="buttons"> <label onclick="document.search.submit()" class="btn btn-default

我有一个带有单选按钮组的表单:

<form name="search" class="form-inline" asp-controller="controller" asp-action="action" method="get">
  <div class="btn-group" data-toggle="buttons">
    <label onclick="document.search.submit()" class="btn btn-default @ActiveTime("AM")" onclick="document.search.submit()">
      <input type="radio" name="time" value="am" autocomplete="off">AM
    </label>
    <label onclick="document.search.submit()" class="btn btn-default @ActiveTime("PM")" onclick="document.search.submit()">
      <input type="radio" name="time" value="pm" autocomplete="off">PM
    </label>
 </div>
</form>
controller\action
的相关部分:

string time = ( (String.IsNullOrEmpty(HttpContext.Request.Query["time"].ToString())) ? "am" : HttpContext.Request.Query["time"].ToString() ).ToUpper();
ViewData["time"] = time;

单击AM或PM标签将提交表单,但不包括单选按钮的值。我遗漏了什么?

它没有发送单选按钮的值,因为当用户单击标签时,浏览器javascript引擎将执行您在该元素上连接的
onclick
事件处理程序。您当前的处理程序将执行此代码
document.search.submit()
,它会立即提交表单,甚至在引导库可以调整单选按钮状态之前

您可以通过劫持click处理程序来解决这个问题,并自己设置单选按钮值,然后提交表单(全部使用javascript)

我将尝试的另一个选项是,从单选按钮选择/单击事件中删除表单提交行为。如果用户想要更改其选择,该怎么办?我会为表单提交创建一个单独的“提交”按钮


我还注意到您在元素上注册了两次
onclick
handler。清理它。

显示您的操作代码。您在谈论哪个复选框值?您共享的代码根本没有复选框@Shyju,称之为复选框/收音机。
string time = ( (String.IsNullOrEmpty(HttpContext.Request.Query["time"].ToString())) ? "am" : HttpContext.Request.Query["time"].ToString() ).ToUpper();
ViewData["time"] = time;