سلام
یک پارشال ویو دارم که یک لیست رو برمیگردونه.
برای بار اول به صورت اتومات اجرا میشه.
حالا یک مقداری رو توسط آجاکس به همون اکشن فرستادم.
می خوام View مربوط به همون بارگذاری مجدد بشه که اطلاعات جدید رو ببینم.
چطوری انجام میشه؟
ممنون.
ولی خود ویو CSHTML رو میخوام.
اطلاعاتم ارسال میشه و کارای لازم روش انجام میشه. فقط خود نتیجه رو میخوام روی صفحه ببینم.
مثلا با دستور Jquery.Load اون فایل cshtml جدید رو بیارم.
تنها لازم است کارای لازم رو آن انجام دهید و آن را مجددا Return کنید.
تشکر از لطفتون.
یه موردی خوردم:
تووی Index که خودشم Partialview هست گفتم:
@Html.Action(_List)
تووی Return همین اکشن یعنی _List هم گفتم:
Return PartialView("_list", AllList)
الان ارور دارم وقتی که گفتم اکشن رو ریتورن کن.
خب ارور قرار بدید تا بتونم کمک کنم :)
این متن ارور هست:
An exception of type 'System.Web.HttpException' occurred in System.Web.dll but was not handled in user code Additional information: Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'.
این عکس ارور هست:
این هم اکشن مربوط به اون هست. [HttpGet] public ActionResult _List(string RecordCount) { SqlConnection ShowForm_con = new SqlConnection(); ShowForm_con.ConnectionString = ConfigurationManager.ConnectionStrings["pppp"].ConnectionString; ShowForm_con.Close(); ShowForm_con.Open(); SqlCommand ShowRows_cmd = new SqlCommand(); ShowRows_cmd.Connection = ShowForm_con; ShowRows_cmd.CommandText = "SELECT Id,ROW_NUMBER() OVER(ORDER BY Id) AS [ردیف], ISNULL(Title,'ندارد') AS Title FROM BaseInformation.TarifRaveshHayeVagozarys ORDER BY Id OFFSET 0 ROWS FETCH NEXT " + RecordCount + " ROWS ONLY"; ShowRows_cmd.ExecuteNonQuery(); SqlDataAdapter ShowRows_dtadptr = new SqlDataAdapter(); ShowRows_dtadptr.SelectCommand = ShowRows_cmd; DataSet ShowRows_dtst = new DataSet(); ShowRows_dtadptr.Fill(ShowRows_dtst, "TarifRaveshHayeVagozarys"); DataTable ShowRows_dttbl = new DataTable(); ShowRows_dttbl = ShowRows_dtst.Tables[0]; SqlDataReader ShowRows_dtrdr = ShowRows_cmd.ExecuteReader(); List<ListTarifRaveshHayeVagozaryViewModel> clientpp = new List<ListTarifRaveshHayeVagozaryViewModel>(); int i; for (i = 0; i <= ShowRows_dtst.Tables[0].Rows.Count - 1; i++ ) { clientpp.Add(new ListTarifRaveshHayeVagozaryViewModel() { Radif = ShowRows_dtst.Tables[0].Rows[i][1].ToString(), Title = ShowRows_dtst.Tables[0].Rows[i][2].ToString() }); } return PartialView("_list",clientpp); }
الان اوکی شده.
ببینید الان RecordCount اگه روی 10 تنظیم بشه، باید تعداد رکوردهای جدولم 10 تا بشه. اما وقتی با آجاکس 10 رو بهش مقید می کنم، فقط رکوردای SQL رو 10 تا میکنه.... اما جدول خروجیم همون تعداد اولیه هست و Refresh نشده.
شما باید با کمک جی کوئری محتوای قبلی یا همون Partial قبلی پاک کنید و محتوای جدید رو جایگزین کنید.
<div id="PatialSection"> @Html.RenderAction("List") </div>
$('#ucertificate') .on('click', '#Create', function () { $('#PatialSection').html(''); var url = '@_createUrl'; $('#PatialSection') .load(url, function () { }); });
مشابه کد بالا، و از RenderAction استفاده کنید چون Performance بیشتری دارد.
باز هم تشکر
الان در ویو _Index کد زیر رو نوشتم و به جای url:
<button id="asasdasd" type="button" style="width:100px;height:100px;"></button> <script> $(document).ready(function () { $("#asasdasd").click(function () { $("#FormList-TarifRaveshHayeVagozary").html(''); $("#FormList-TarifRaveshHayeVagozary").load("@Url.Action("_List")"); }) }) </script>
رو قرار دادم. اما خبری از لود نیست.
برنامه رو Trace کنید تا متوجه شوید مشکل از کجاست و این که Console مرورگر خود را بررسی کنید خطا دارد یا خیر.
یک Break Point در کنترلر خود قرار دهید و خط به خط کد هایتان را بررسی کنید. برای Trace کردن کد های جاوا اسکریپتی هم میتوان از کلمه debuger; درون function استفاده کنید.
با استفاده از Inspect مروگر کد جاوااسکریپتی رندر شده رو برای من بفرستید.
<div id="FormList-TarifRaveshHayeVagozary" class="row"></div> <button id="asasdasd" type="button" style="width:100px;height:100px;"></button> <script> $(document).ready(function () { $("#asasdasd").click(function () { var url = "/BaseInformation/TarifRaveshHayeVagozary/_List"; $("#FormList-TarifRaveshHayeVagozary").html(''); $("#FormList-TarifRaveshHayeVagozary").load(url); }) }) </script>
این کدهای خروجی هست.
این هم تصویر دیباگر:
Response Header رو به صورت متن بفرستید.
بفرمایید:
Cache-Control private Date Thu, 13 Jul 2017 08:19:21 GMT Server Microsoft-IIS/8.0 Transfer-Encoding chunked X-AspNet-Version 4.0.30319 X-AspNetMvc-Version 5.2 X-Powered-By ASP.NET X-SourceFiles =?UTF-8?B?RTpcTXIgR29kYXJ6aVxGaXJzdCBQcm9qZWN0IEZpbGVcTWFkZWggMjdcQmFja3VwLU5hZW1pKHNhem1hbiBtb2RpcmlhdClcV2ViXEJhc2VJbmZvcm1hdGlvblxUYXJpZlJhdmVzaEhheWVWYWdvemFyeVxfTGlzdA ==?=
در تصویر و در ارور اشاره کرده به 401
یعنی شما دسترسی به مسیر ندارید
آیا از اهراز هویت برای اون آدرس استفاده کردید ؟
به صورت غیر ajax فراخوانی کنید وتست کنید
متن خطا تو این متن نبود لطفا متن خطارو بفرستید
خیر. اهراز هویت نگذاشتم. اما دسترسی رو برای همه آزاد گذاشتم:
[AllowAnonymous] [HttpGet] public PartialViewResult _List(string RecordCount) { }
همه اطلاعاتی که گفتین رو گذاشتم. متن خطا هم فقط همون قرمز رنگه هست...
الان که [AllowAnonymous] رو اضافه کردم مشکل حل شده و بارگذاری انجام میشه.
تشکر از لطفتون. فرصتی باشه جبران کنم...
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)