PDA

View Full Version : سوال: حذف رکورد بدون نمایش ویوی delete



mbasirati
دوشنبه 27 مهر 1394, 09:21 صبح
سلام
من میخوام توی ویوی Index که کل رکوردهای جدولم لیست شده با زدن دکمه حذف، مستقیم رکورد حذف بشه و ویو آپدیت بشه و دیگه به ویوی Delete نره.

hakim22
دوشنبه 27 مهر 1394, 09:52 صبح
یک روش استفاده از متد Get برای اجرای عملیات حذف هست. البته خیلی خطرناکه و یک حفره ی امنیتی هست. چون یکی میتونه با استفاده از آدرس بار همه ی رکوردها رو خواسته یا ناخواسته پاک کنه.
همینطور ربات ها ... هم میتونن هنگام فراخوانی صفحه ایندکس شده اطلاعات رو پاک کنند.

یکی از بهترین راه ها همون نمایش صفحه ی حذف هست. راه دیگه اینکه که یک چک باکس برای انتخاب ردیفها بزارید و با دکمه ی حذف بره به صفحه ی حذف و چند مورد رو با هم پاک کنه.
اگر میخواهید به صورت خیلی زنده و داینامیک یک ردیف رو حذف کنید باید از ajax استفاده کنید. در این صورت پیاده سازی این موضوع که بعد از حذف اطلاعات از لیست باید لیست بازخوانی بشه یا آپدیت بشه هم باید در نظر بگیرید.

mbasirati
دوشنبه 27 مهر 1394, 10:16 صبح
در این صورت پیاده سازی این موضوع که بعد از حذف اطلاعات از لیست باید لیست بازخوانی بشه یا آپدیت بشه هم باید در نظر بگیرید.

خب منم الان با ای جکس اون رکورد رو حذف میکنم. منتها برای آپدیت ویو، فقط با خود جی کوئری tr رو remove میکنم و بررسی میکنم اگه تعداد trها صفر شد کل table رو remove میکنم و به جاش یه div با کلاس alert-info جایگزین میکنم. یعنی درواقع آپدیت لیست با ای جکس انجام نمیشه.
مشکل منم همینه که نمیدونم چطور باید لیست رو با ای جکس آپدیت کنم. آیا باید برم اطلاعات رو بخونم و بعد کد اچ تی ام الش رو بسازم و نمایش بدم یا راه دیگه ای هست؟

hakim22
دوشنبه 27 مهر 1394, 10:30 صبح
انجام دستی اینکار ساده نیست. البته روشی که شما استفاده کردید خیلی هم بد نیست. هیچ دلیلی برای اینکه بخواهیم دوباره اطلاعات رو از سرور دانلود کرده و نمایش بدیم وجود نداره.

به طور کلی برای موارد این چنین شما باید Mode - View - ViewModel رو پیاده کنید یا اصلاحان MVVM . در این روش اطلاعات بین مدل و ویو و ویو مدل رد و بدل میشه و به کنترلر یا به سرور برنمیگرده.

یکی از بهترین ابزار برای پیاده سازی چنین فرمها و صفحاتی در سایت استفاده از Knockout.js هست.