أفضل الممارسات لإعادة استجابة من وجهة نظر جزئية

StackOverflow https://stackoverflow.com/questions/1876280

  •  18-09-2019
  •  | 
  •  

سؤال

أنا أكتب منصة مدونات بسيطة مع ASP.NET MVC. سؤالي فيما يتعلق بالنماذج الواردة في وجهات نظر جزئية ومعالجة الاستجابة أو أخطاء التحقق من الصحة أو النجاح، من وحدة التحكم.

لدي عرض مدونة نشر عنصر التحكم الذي يحتوي على وحدة تحكم مرتبطة ترجع منشورا لعنوان URL معين. Embedded في هذا الرأي هو عرض جزئي يحتوي على نموذج لتقديم التعليقات في المنشور. يقدم نموذج العرض الجزئي إلى وحدة تحكم منفصلة يتصنع بإضافة التعليقات. داخل إضافة تعليق Action أقوم بإجراء التحقق من الصحة وإضافة أخطاء إلى كائن ModelState.

المشكلة هي أنه يتعين علي إرجاع إعادة توجيه إعادة توجيه في إجراء العرض الجزئي بحيث يتم إرجاع المستخدم إلى عنصر ما بعد المنشور، مما يعني أنني فقدت كائن ModelState أو أي رسائل نجاح أريد العودة.

لقد رأيت الناس يذكرون استخدام tempdata لتمرير التحقق من الصحة أو معلومات النجاح مرة أخرى إلى العرض الأصلي، ولكن بالنسبة لي هذا يبدو تتبع بعض الشيء. هل هذا هو الحل حقا؟ إذا كان الأمر كذلك، فهل يمكن لأي شخص أن يوصي بمثال جيد لاستخدامه؟ إذا لم يكن الأمر كذلك، هل هذه علامة على مشاكل أكبر في الهندسة المعمارية المختارة؟

هل كانت مفيدة؟

المحلول

لقد استخدمت نمط PRG في الماضي جربه

استخدام نمط PRG لتعديل البيانات

نصائح أخرى

يمكنك الحصول على تعليق عمل استدعاء إجراء المشاركة ...

شيء مثل هذا أعتقد:

public class PostController
{
    ... blah ...

    public ActionResult ViewPost(int postId)
    {
        Post post = PostRepository.GetPost(postId);
        return View("ViewPost", post);
    }

    public ActionResult AddComment(int postId, string comment, string otherInfo)
    {
        //Validate stuff, setting modelstate etc

        //If it isn't valid, return the same post view (modelstate will stay)
        if (!ModelState.IsValid)
            return this.ViewPost(postId);

        //If it is valid then we want to save it and follow PRG pattern
        PostRepository.Save(newValidComment);
        TempData["Message"] = "Thanks for your comment!";
        return RedirectToAction("ViewPost", new {id = postId});
    }
}

أو اختلاف من نفس المفهوم ...

hths،
تشارلز

هل فكرت في استخدام مكتبات Ajax فقط لنشر تلك المنطقة من الصفحة؟ وبهذه الطريقة لن تحتاج إلى إعادة توجيه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top