如何避免在调用时使用硬编码字符串文字,例如RedirectToAction?

时间:2017-04-28 06:38:19

标签: c# asp.net

在调用Html.DisplayNameFor时,我们只提供一个lambda表达式来呈现,例如,通过item => Model.Name呈现学生姓名。 由于编译时检查,这种方法非常好。

如何使RedirectToAction成为可能,例如RedirectToAction(controller => Controllers.Student.Index)而不是RedirectToAction("Index")?假设名为Controllers的属性包含项目中使用的所有控制器。

1 个答案:

答案 0 :(得分:2)

你可以。

作为变体 - 从ControllerBase创建CoolControllerBase继承者并添加Controllers属性。所有控制器都应该继承CoolControllerBase。使用静态构造函数中的反射填充Controllers属性:GetAssembly,GetClasses为每个类继承CoolControlelrBase,GetMethods。

其他变体 - 与Roslyn实现相同。

第三种变体:使用nameof。

RedirectToAction(nameof(Student), nameof(Student.Index)) 

但你的目标是什么?你想要自动完成吗?