传递参数或使用不同的操作方法

时间:2012-05-22 11:18:16

标签: c# .net asp.net-mvc design-patterns

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

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);
}

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

哪一个更好,为什么?或者是否有更好的模式出现在你的脑海中?

1 个答案:

答案 0 :(得分:1)

圣洁的吸烟,控制者需要节食;)

OT:就我个人而言,我建议你将它们分成不同的动作方法,将它分开,以便每个Action只返回一种类型的控制器,因为它是类型的Action 。 / p>

这样做也意味着你可以从控制器中抽象出那个逻辑,因为MVC的最佳实践是瘦控制器,胖模型,你将无法遵守那是因为在这种情况下你的控制器必须确定模型类型。