传递参数或具有不同的操作方法

本文关键字:操作方法 参数 | 更新日期: 2023-09-27 18:35:01

我正在使用 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);
}

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

哪一个更好,为什么?或者您想到了更好的模式吗?

传递参数或具有不同的操作方法

控制者需要节食的神圣烟雾;)

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

这样做

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