这里我尝试使用两个单选按钮,一个文本框和一个使用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());
}
}
答案 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();
您将获得已选中单选按钮的值。