【发布时间】:2012-05-22 11:18:15
【问题描述】:
我正在使用 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);
}
然而,现在有一种想法,也许不同的视图模型不应该在同一个动作方法中。因此,不是将伙伴作为参数传递,而是针对不同的伙伴有不同的操作方法。
哪个更好,为什么?或者您有没有更好的模式?
【问题讨论】:
-
我不认为你需要在这里采取不同的行动。
-
你能把伙伴模型绑定成一个对象吗?并使用继承,这样你就可以摆脱 switch 语句?
标签: c# .net asp.net-mvc design-patterns