با سلام من یه اکشن دارم که یک Querystring در url ایجاد میکنه به صورت زیر
من میخوام از این serach در یک اکشن دیگه استفاده کنم اینو نوشتم اما جواب نمیده
[HttpPost] public ActionResult Paging(int i) { string search = ""; search = Request.QueryString["search"].ToString();
توو اینترنتم گشتم چیزی پیدا نکردم یعنی تست کردم جواب نداد
ممنونم
خب معلومه که جواب نمیده چون request ارسالی مختص این Action نیست تا شامل Quey setring مورد نظر باشد.
خب من چیکار کنم ؟ من فقط توو url این search رو دارم و هیچ جوره بهش دسترسی ندارم نمیتونم توو یه اکشن دیگه از url صفحه رو بخوونم و querystring اشو دربیارم ؟
یه راه حل دیگه ندارید؟
به این صورت عمل کنید:
[HttpGet()] [Route("Home/Moshaver")] public ActionResult Moshaver(string search) { return View(); }
http://localhost:7537/Home/Moshaver?search=soheil
ببینید من یه صفحه دارم به صورت زیر از اکشن Moshaver استفاده میکنه
وقتی توو سرچ میرم چیزی رو سرچ میکنم به صورت زیر میشه
وقتی چیزی رو سرچ میکنم اون بالا توو querystring میاد من توو همین view مربوط به Moshaver برای این دکمه های پایین نوشتم که دکمه رو زدیم بره به یه اکشن دیگه و ایجکسی موارد رو بیاره
<button class="btn-u btn-u-default" onclick="Fun(@ii);">@ii.ToString()</button>
و اینم کدش که در view مربوط به Moshaver هست
function Fun(i) { $.ajax({ type: "POST", url: '@Url.Action("Paging", "Home")', data: JSON.stringify({ i: i }), contentType: "application/json; charset=utf-8", dataType: "html", success: function (result) { $("#ress").html(result); }, error: function (result) { alert("برنامه با خطا مواجه شد"); } }); };
حالا میخوام از این serach که در url هست در این اکشن استفاده کنم چیکار کنم؟
[HttpPost] public ActionResult Paging(int i) { if (Request.IsAjaxRequest() == true) { grdMoshaver entity = new grdMoshaver(); MoshaverRepository bl = new MoshaverRepository(); var list = bl.All().Where(c => c.Moshaver_Status == true).ToList(); string search = ""; search = Request.QueryString["search"].ToString(); if (search != null && search != "") { list = list.Where(c => c.Moshaver_Text.Contains(search)).ToList(); }
ممنونم(خیلی کارم گیر هست و واقعاً عجله ای هست)
آقای علیزاده من توو اکشن Paging این serach رو میخوام متوجه منظورم میشید؟
متوجه شدم.
اول از GET به جای POST استفاده کنید در این قسمت استفاده POST غیر ضروری است و چون جنبه نمایشی دارد باید از GET استفاده کنید.
به راحتی میتوانید مشکلتان را با Route حل کنید.
[HttpGet] [Route("")] [Route("Moshaver/{i}/{search?}")] public ActionResult Paging(int i, string search) { return View(); }
localhost:7537/Moshaver/2?search=test
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)