コントローラーにパラメーターを送信したい.これは私のビューページです:
<div>
<li> <input name="chk" type="checkbox" value="1"> electronics </li>
<li> <input name="chk" type="checkbox" value="2"> Construction</li>
<li> <input name="chk" type="checkbox" value="1"> Hardware</li>
<div class="row service-block" id="results">
@Html.Partial("_searchPartial", Model)
</div>
</div>
$("input[type='checkbox']").on('change', function () {
var checkboxes = document.getElementsByName('chk');
var vals = "";
for (var i = 0, n = checkboxes.length; i < n; i++) {
if (checkboxes[i].checked) {
vals += "," + checkboxes[i].value;
}
}
if (vals) vals = vals.substring(1);
$.ajax({
url: "/Search/SearchWorkers",
type: "GET",
dataType: 'html',
data: { checkCategoriesId: vals,"City": "@ViewBag.City", "OrderBy": "@TempData["OrderBy"]" },
contentType: "text/html;charset=utf-8",
success: function (responce)
{
$("#results").html(responce);
},
error:function (xhr, ajaxOptions, thrownError)
{
alert("test");
}
})
});
これは私のコントローラーです。まず、orderby 値を保持しているこのメソッドを呼び出しています。
[HttpGet]
public ActionResult SearchPaging(string ItemSearchText,string City, string OrderBy, int PageNo, string Zipcode, string Flag,string checkCategoriesId)
{
TempData["OrderBy"] = OrderBy;
return PartialView("_searchPartial", userDetailsModel.OrderBy(v => v.Fullname).ToPagedList(PageNo, 1));
}
[HttpGet]
public ActionResult SearchWorkers(string checkCategoriesId,string OrderBy,string Flag,string City, int PageNo = 1)
{
TempData["OrderBy"] = OrderBy
return PartialView("_searchPartial", userDetailsModel.OrderByDescending(p => p.CreatedDate).ToPagedList(PageNo, 1));
}
tempdata の値を確認しましたが、ビュー ページに値が表示されています。
しかし、チェックボックスの変更イベントを発生させ、tempdata 値を渡すと、null 値が取得されます。
何が問題なのかわからない
誰でも理解できますか?