我对完成某项工作的方式感到有点困惑。我的网站可以向用户显示故事Feed,并且Feed可以是多个类别之一。 (例如,您可以查看"所有故事" Feed,或者#34;我提交的内容和#34; Feed。)
在处理路由方面,它更有意义:
1)让Action(主页/索引)处理不同的" storyCategory"带路由的参数如下:
[Route("~/"), Route("")] //Index will be default route for both SiteRoot and SiteRoot/Home
[Route("{storyCategory?}/{page?}")]
[Route("{storyCategory?}/Page/{page?}")]
public ActionResult Index(Story.Category storyCategory = Story.Category.None, int page = 1)
OR
2)对每个storyCategory都有一个特定的操作,而不是将枚举作为参数传递:
[Route("~/"), Route("")] //Index will be default route for both SiteRoot and SiteRoot/Home
public ActionResult Index(int page = 1)
public ActionResult ReadLater(int page = 1)
public ActionResult PlanToUse(int page = 1)
答案 0 :(得分:2)
如果您的所有Feed完全相同,只需要几个参数始终相同的操作,第一个选项似乎很明显......
然而,如果将来你想拥有一个不同的" ReadLater"在其中一个Feed中(使用不同的参数),您可能会后悔选择第一个选项。
出于以下原因,我会采取第二种选择:
此外,如果您的Feed增长超出预期,您可以创建一个常量文件,以这种方式关联每个控制器及其操作:
namespace Stories
{
public class ControllersNames {
public const string AllStories = "AllStories";
public const string MySubmissions = "MySubmissions";
}
public class ActionsNames
{
#region AllStories
public const string AllStories_ReadLater = "ReadLater";
public const string AllStories_PlanToUse = "PlanToUse";
#endregion
#region MySubmissions
public const string MySubmissions_ReadLater = "ReadLater";
public const string MySubmissions_PlanToUse = "PlanToUse";
//same action but with different paramaters below
public const string MySubmissions_PlanToReUse = "PlanToUse";
public const string MySubmissions_Store = "Store";
#endregion
}
}
在您看来的某个地方,您可能会收到与此相似的电话:
<a ... href="@Url.Action(
ActionsNames.MySubmissions_PlanToUse,
ControllersNames.MySubmissions,
new { page = Model.MySubmissions.IDPage })">
更容易阅读并采取更多行动......
答案 1 :(得分:1)
我会选择第一个选项,因为仅仅为了过滤文章/内容而采取不同的行动是没有意义的。
在路线中使用枚举似乎并不是一个完美的选择。有意义的字符串更好。