كيفية استخدام MVC العمل النتائج من الويب العادية أشكال (تزوير ControllerContext)?

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

سؤال

لدينا للتوصيل إطار عودة ActionResult الأشياء التي تجعل الأشياء إلى المتصفح.واحد وقت متأخر من كسر الشرط هو أن لدينا الإضافات يجب أن تكون للاستدعاء من العادية ASP.NET نماذج ويب التطبيق.

حتى الآن كنت قد حان حتى مع هذا ، الذي يعمل الأساسية ActionResults:

public class ActionResultTranslator {

    HttpContextBase _context;

    public ActionResultTranslator(HttpContextBase context ) {

        _context = context;
    }

    public void Execute(ActionResult actionResult) {

        ControllerContext fakeContext = new ControllerContext();
        fakeContext.HttpContext = _context;            

        actionResult.ExecuteResult(fakeContext);        
    }
}

يمكنك أن تتصل أعلاه من نموذج ويب مع:

protected void Page_Load(object sender, EventArgs e) {
   HttpContextWrapper contextWrapper = new HttpContextWrapper(this.Context);
   var translator = new ActionResultTranslator(contextWrapper);
   translator.Execute(new RedirectResult("http://google.com"));     
}

ماذا يجب أن أفعل ربط كل شيء ؟ على سبيل المثال ، ما إذا أردت العودة ViewResult?

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

المحلول

ليس هناك الكثير من خصائص وهمية على ControllerContext.

  • HttpContext - كنت قد حصلت على تغطية هذا
  • تحكم - بقدر ما أستطيع أن أقول أي معيار ActionResults الرعاية إذا كان هذا هو اليسار فارغة
  • RequestContext - سوف يتم ملؤها تلقائيا إذا تركت فارغة
  • RouteData - سوف يتم ملؤها مع فارغة جمع إذا تركت فارغة.

لذلك كنت مجرد ترك للقلق أن ActionResult يمكن أن تعتمد على تعسفي مفاتيح التواجد في RouteData.أ ViewResult يجب أن تكون سعيدا طالما أنت تعيش العمل و تحكم بحيث يعرف أن ننظر فيها بالنسبة لعرض الملف.إذا قمت بتغيير التعليمات البرمجية الخاصة بك لتوفير RouteData مع تلك القيم ، يجب أن تكون على ما يرام.

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