RadioButton无法使用Jquery Ajax访问搜索

时间:2017-06-01 03:14:36

标签: javascript c# jquery ajax asp.net-mvc

这里我尝试使用两个单选按钮,一个文本框和一个使用jquery ajax的按钮来进行搜索。
现在的问题是,我检查该radiobuttn的值始终是TaskName作为结果searchByOption到控制器总是TaskName.Ie即使我选择AssignedTo radiobutton tha值仍然是TaskName

以下是我的html

<div class="form-group input-group input-group-sm">
    @Html.RadioButton("option", "TaskName") <text>TaskName</text>
    @Html.RadioButton("option", "AssignedTo") <text> AssignedTo </text>
</div>

<div class="form-group input-group">
   <input type="text" name="table_search" id="txtSearch" class="form-control pull-right" placeholder="Search--">
   <span class="input-group-btn">
      <button class="btn btn-default" id="btnSearch" type="submit"><i class="fa fa-search"></i></button>
   </span>
</div>


下面是我的jquery Ajax

<script>
$(document).ready(function () {
    $(document).on('click', "#btnSearch", function () {
        debugger;
        var paramSprintNo = $("#getSprintNumber").val();

        var searchOption = $("#option").val();

        var searchElement = $("#txtSearch").val();

        var paramProjectid = $("#getNewProjectId").val();

        var paramsStatus = 30;

        var parameter = { sprintNo: paramSprintNo, ProjectId: paramProjectid, searchString: searchElement, searchByOption: searchOption, status: paramsStatus };
        debugger;
        $.ajax({
            url: "/TaskMains/Search",
            type: "get",
            dataType: "html",
            data: parameter,
            success: function (data) {
                debugger;
                $(".searchedContent").html("");
                $(".searchedContent").html(data);
            }
        })
    });
});
</script>

以下是控制器

 public ActionResult Search(int status, int sprintNo, int ProjectId, string searchString, string searchByOption)
    {
        var taskmaninss = (from S in db.TaskMains
                           join T in db.TaskIterations on S.TaskId equals T.TaskId
                           join TA in db.TaskAssigneds on S.TaskId equals TA.TaskId
                           join IT in db.Iterations.Where(x => x.Name.Equals("Sprint " + Math.Abs(sprintNo)) && x.ProjectId == ProjectId) on T.IterationId equals IT.IterationId
                           join A in db.AllStatus.Where(x => x.StatusFor == 10) on S.Status equals A.Status
                           select new { S.TaskName, S.ProjectId, A.StatusName, S.Status, S.TaskId, S.PercentCompleted, TA.ProjectMember.MemberId, TA.ProjectMember.User.UsrName }).ToList();
        var tasklist = taskmaninss.Select(x => new TaskBySprintViewModel()
        {
            TaskName = x.TaskName,
            Status = x.Status,
            TaskId = x.TaskId,
            PercentCompleted = x.PercentCompleted,
            MemberId = x.MemberId,
            MemberName = x.UsrName,
            ProjectId = x.ProjectId,
            StatusName = x.StatusName

        }).OrderBy(x => x.StatusName).ToList();


        if (searchByOption == "AssignedTo")
        {

            ViewBag.sprintName = "Sprint " + Math.Abs(sprintNo).ToString();
            var searchedTasklistByUserName = tasklist.Where(n => n.MemberName == searchString).ToList();
            return PartialView("_InprogressTasklist", searchedTasklistByUserName.ToList());
        }
        else if (searchByOption == "TaskName")
        {
            ViewBag.sprintName = "Sprint " + Math.Abs(sprintNo).ToString();
            var searchedtasklistbytaskname = tasklist.Where(x => x.TaskName == searchString || searchString == null).ToList();

            return PartialView("_inprogresstasklist", searchedtasklistbytaskname.ToList());

        }
        else
        {
            return PartialView("_InprogressTasklist", tasklist.ToList());
        }
}

3 个答案:

答案 0 :(得分:1)

我不是mvc guru,但看起来#option元素的选择器可能会返回两个单选框,但val()函数会为您提供第一个单选按钮元素的值。您可以尝试var searchOption = $("#option:checked").val();

之类的内容

答案 1 :(得分:1)

这将返回第一个单选按钮的值

var searchOption = $("#option").val();

试试这个

var searchOption = $("#option:checked").val();

答案 2 :(得分:0)

您在选择器下方获取已检查的无线电禁止值:

var searchOption = $('input[name="option"]:checked').val();

您将获得已选中单选按钮的值。