0

我正在使用 mvc 为不同的集成创建提要 api。例如,假设我想向其他人提供发布在我网站上的问题的提要。最初的实现是将第三方的名称作为参数传递给提要控制器上的操作方法。

public XmlResult Get(string partner)
{

    //Call the business layer and get the List<Questions>       


    if (!string.IsNullOrEmpty(partner))
    {
        partner = partner.ToLower();

        switch (partner)
        {
            case "org1":
                Org1XMLFeedViewModel org1FeedViewModel = new Org1XMLFeedViewModel();
                org1FeedViewModel.LastBuildDate = DateTime.Now;

                foreach (QuestionInfo Question in QuestionsForFeed)
                {
                    Org1XMLFeedQuestionViewModel QuestionForFeed = new Org1XMLFeedQuestionViewModel(Question);
                    Org1FeedViewModel.Questions.Add(QuestionForFeed);
                }
                return new XmlResult(Org1FeedViewModel);                        
        case "org2":
        //similar to org1, use org2 ViewModel                       
            default:
                return new XmlResult(QuestionsForFeed);
        }
    }

    return new XmlResult(QuestionsForFeed);
}

然而,现在有一种想法,也许不同的视图模型不应该在同一个动作方法中。因此,不是将伙伴作为参数传递,而是针对不同的伙伴具有不同的操作方法。

哪个更好,为什么?还是有更好的模式出现在您的脑海中?

4

1 回答 1

1

控制器需要节食的圣烟;)

OT:就个人而言,我建议您将它们拆分为不同的操作方法,将它们分开,以便每个 Action 只能返回一种类型的控制器,因为它是那种类型的 Action

这样做也意味着您可以从控制器中抽象出该逻辑,因为 MVC 的最佳实践是瘦控制器,胖模型,您将无法在这里坚持这一点,因为它是您的控制器必须在这种情况下确定模型类型。

于 2012-05-22T11:21:57.627 回答