2009-11-02 6 views
1

Поскольку мое действие @html.render приводит к сбою моего dev и prod-серверов, я должен использовать частичные части (дерьмо).Создать базовый класс контроллера (частичный)

Я пробовал создать класс public partial controller{}, поэтому я могу установить необходимые данные для всех своих просмотров, но мне не повезло (все ломается).

Я иду из фона LAMP cakePHP и действительно нуждаюсь в простоте.

Мне нужно знать, как создать частичный базовый контроллер (, который не переопределяет обычный базовый контроллер) и как получить доступ к нескольким моделям от класса.

Спасибо!

+1

почему вы не можете переопределить базовый контроллер? Просто создайте свой собственный базовый контроллер, на который наследуются все остальные контроллеры. Это рекомендуемый способ сделать это с помощью ASP.NET MVC. –

+0

Добавил комментарий к моему отзыву о ViewData (это для вас, чтобы получить уведомление). Тем не менее, я бы посоветовал вам выяснить, почему RenderAction вылетает (спросить в SO, отслеживать следы исключений и т. Д.), Поскольку он очень полезен для рендеринга ортогональных данных. – queen3

+0

ViewData ["x"] для одного объекта не должен вызывать ошибки. RenderAction не должен падать. Вы по-прежнему не обнаружили никакой ошибки, с которой вы столкнулись - ни от RenderAction, ни от ViewData ["x"]. Без этой информации почти невозможно помочь. Я согласен с тем, что интересно продолжать «трудный путь» - то есть, себя, но зачем спрашивать здесь? – queen3

ответ

3
public class BaseController: Controller 
{ 
    public override OnActionExecuting(...) { ... } 
    public override OnActionExecuted(... context) 
    { 
     if (context.Result is ViewResult) 
      ((ViewResult)context.Result).ViewData["mycommondata"] = data; 
    } 
    ... 
} 

public class MyController1: BaseController 
{ 
} 

I.e. просто вытекает из вашего нового базового класса контроллера.

Однако я бы предложил вам спросить, почему ваш RenderPartial «сбой» - так как это может быть лучшим способом для вас, и он, очевидно, не должен терпеть крах.

+0

renderpartial works - его рендеринг (фьючерсы), который вылетает , и мне нужно несколько наборов данных в моих представлениях - теперь смотрю на модель модели представления, но я действительно пропустил cakePHP (возможно, это уже было сделано) – rxhector

+0

OK, RenderAction, но почему и как он падает? Почему вместо исправления проблемы вы хотите что-то менее подходящее для проблемы? Кроме того, если вам нужно несколько данных, почему бы вам не использовать ViewData ["data1"] = data1; ViewData ["data2"] = data2. И, конечно же, вы могли бы это сделать уже; и если бы мне пришлось писать в CakePHP, я бы сказал: «Я мог бы сделать это сейчас в ASP.NET MVC» ;-). – queen3

+0

Я попытался установить viewdata ['x'] и viewdata ['y'] viewdata ['x'] - это единственный объект viewdata ['y'] - это список . Я могу передать viewdata ['y'] на частичный вид, но сингулярный viewdata ['x'] вызывает ошибки Я все еще устраняю проблему, почему рендеринг сбрасывает все - по крайней мере, я все еще собираюсь - это забавно узнать «трудный путь» – rxhector

3

лучший способ создать базовый контроллер

public class Controller : System.Web.Mvc.Controller 
{ 
    public shipsEntities db = new shipsEntities(); 

    public Controller() 
    { 
     ViewData["ships"] = db.ships.ToList(); 
    } 
} 

этак остальные контроллеры следуют регулярное Конвенцию

public class MyController : Controller 
Смежные вопросы