ASP.Net MVC“Magic Strings” - 可以避免吗?

时间:2009-11-12 09:27:21

标签: asp.net-mvc

好的,请看下面这个例子:

public ActionResult ViewProfile()
{
    //Load the profile for the currently logged in user
    if (Membership.GetUser() != null)
    {
        //Do some stuff get some data.
        return View(ReturnViewModel);
    }

    return RedirectToAction("MainLogon", "Logon");
}

在重定向到登录页面时,有没有避免“魔术字符串”?

2 个答案:

答案 0 :(得分:11)

在这种情况下,我不会接近MVC Futures。

我建议使用T4MVC

David Ebbo在这里谈到它: http://blogs.msdn.com/davidebb/archive/2009/06/17/a-new-and-improved-asp-net-mvc-t4-template.aspx

此处的更新版本还包括对行动方法的重构支持:

http://blogs.msdn.com/davidebb/archive/2009/06/26/the-mvc-t4-template-is-now-up-on-codeplex-and-it-does-change-your-code-a-bit.aspx

意味着不要使用这样的文字:

<% Html.RenderPartial("DinnerForm"); %>

您现在可以使用intellisense并强烈输入:

<% Html.RenderPartial(MVC.Dinners.Views.DinnerForm); %>

斯科特·汉塞尔曼(Scott Hanselman)也在博客上发表过这篇文章:

http://www.hanselman.com/blog/TheWeeklySourceCode43ASPNETMVCAndT4AndNerdDinner.aspx

答案 1 :(得分:1)

(1)。有一种方法可以使用强类型方法。他们曾经在ASP.NET MVC预览中,但已从发布中删除并放入MVC Futures

类似的东西:

Html.ActionLink<HomeController>(c => c.Index(), "Home")

(2)。定义所有操作的常量并使用它们。