C# 在razor视图中为操作URL设置变量是一种好的做法吗?我可以把它们放在ViewModel中吗?

C# 在razor视图中为操作URL设置变量是一种好的做法吗?我可以把它们放在ViewModel中吗?,c#,asp.net,razor,viewmodel,core,C#,Asp.net,Razor,Viewmodel,Core,我正在尝试使用更清晰的视图,以便于可读性和修改 对于每个视图,我通常有两个变量,表示其中使用的操作URL: @model IndexViewModel @{ //控制器 字符串newsControllerName=nameof(NewsController).ToName(); //呼吁采取行动 string removeNewsActionUrl=Url.Action(nameof(newcontroller.RemoveNews)); 字符串getNewsActionUrl=Url.Acti

我正在尝试使用更清晰的视图,以便于可读性和修改

对于每个视图,我通常有两个变量,表示其中使用的操作URL:

@model IndexViewModel
@{
//控制器
字符串newsControllerName=nameof(NewsController).ToName();
//呼吁采取行动
string removeNewsActionUrl=Url.Action(nameof(newcontroller.RemoveNews));
字符串getNewsActionUrl=Url.Action(nameof(NewsController.GetNews));
string indexActionUrl=Url.Action(nameof(newcontroller.Index));
} 
因此,我可以在JavaScript中用于ajax调用的视图数据属性中使用它们:


...
然后,我的一个朋友建议我不应该在视图中声明变量,因为这是一种不好的做法,为什么不在该视图的ViewModel中声明变量呢?在本例中是
IndexViewModel

我知道视图不应该有复杂的逻辑,应该有最少的C#代码,但是我正在做的是一个糟糕的实践吗?如果是,为什么?为此,在该视图的ViewModel中声明变量有缺点还是优点

从视图和视图模型:

视图负责通过用户界面显示内容。他们使用Razor视图引擎在HTML标记中嵌入.NET代码视图中应该有最小的逻辑,其中的任何逻辑都应该与呈现内容相关。如果您需要在视图文件中执行大量逻辑,以便从复杂模型中显示数据,请考虑使用视图组件、View模型或视图模板简化视图>/P>。 我在这个网站上找不到任何与此相关的内容


提前谢谢

我不想在视图模型中使用这些东西。这是多余的,因为模型和控制器之间没有任何通信

我不认为这有什么问题——这是一个最小的逻辑,它纯粹与视图本身有关。把它放在其他地方会毫无理由地污染代码库的另一部分


也就是说,我真的看不出代码块有什么好的理由——为什么不直接将其内联到HTML属性中呢?

谢谢。我发现将所有链接放在视图顶部进行编辑更方便。另外,我发现
随身携带更容易阅读,那么-我想你的朋友把他们的代码气味检测器指向了错误的方向。