Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用相对路径(即_layout.cshtml)从共享布局调用mvc razor视图中的函数_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 使用相对路径(即_layout.cshtml)从共享布局调用mvc razor视图中的函数

C# 使用相对路径(即_layout.cshtml)从共享布局调用mvc razor视图中的函数,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,是否可以调用在_layout.cshtml文件中声明的函数,并使用相对路径在子视图中访问它 我在_layout.cshtml中的函数 @functions{ public static string SampleFunction(string temp) { string sample=temp; return sample; } } 我从may child view中这样称呼它 @Html.Raw(MyDirectory_MyA

是否可以调用在_layout.cshtml文件中声明的函数,并使用相对路径在子视图中访问它

我在_layout.cshtml中的函数

   @functions{

    public static string SampleFunction(string temp)
    {
        string sample=temp;
        return sample;
    }
}
我从may child view中这样称呼它

@Html.Raw(MyDirectory_MyApp_Views_Shared__Layout_cshtml.SampleFunction("Test"))
但我想用相对路径来称呼它,比如

@Html.Raw("~/Views/Shared/_Layout.cshtml...") // My function blah blah blah

当我在视图中声明并调用函数时,它工作得很好,但我想使它对所有视图都通用,这就是为什么我将它放在母版页中,即_Layout.cshtml

简短回答是否(并且使用
@Html.Raw(…)
没有意义)。在项目中创建一个静态方法,而不是视图,并在视图中调用它(或者更好,使用一个包含方法结果属性的视图模型,并在将模型传递到视图之前调用GET方法),千万不要使用
@Html.Raw
通过其路径引用资源,如
@Url.Content
,它只能用于返回未编码的字符串。将静态方法移到视图页面之外,并从该方法中指定字符串属性(不要忘记将viewmodel与相应的视图一起返回)。我认为您应该重新考虑您的方法。Razor不是定义可重用实用程序函数的好地方。即使你能让它工作起来,这也不是这些模板的目的。您应该在C#类中定义函数,在C#类中可以从所有模板访问函数。好的,我将更改我的流并将其移动到BLL层,它对所有视图都适用。感谢大家的指导
   @functions{

    public static string SampleFunction(string temp)
    {
        string sample=temp;
        return sample;
    }
}