访问整个ASP.NET站点中站点布局文件中的Razor函数
本文关键字:站点 文件 Razor 函数 布局 ASP NET 访问 | 更新日期: 2023-09-27 18:28:15
我在_SiteLayout.cshtml
文件的开头有几个Razor函数,我认为使用它进行布局的页面可以访问这些函数。然而,它似乎不起作用。。。其他页面有没有办法利用它们?
编辑:下面是其中一个函数的示例。如果我像你提到的那样定义函数,我能用它的名字来调用它吗?示例SaveQuestion(3, someVariableHere)
public void SaveQuestion(int QID, string A)
{
if (A != "")
{
var db = Database.Open("DB2");
var save = "INSERT INTO QuestionnaireData (QuestionID, ID, Answer) VALUES (@0, @1, @2)";
db.Execute(save, QID, WebSecurity.CurrentUserId, A);
}
}
类似于:
public static class GlobalFunctions
{
public void SaveQuestion(int QID, string A)
{
if (A != "")
{
var db = Database.Open("DB2");
var save = "INSERT INTO QuestionnaireData (QuestionID, ID, Answer) VALUES (@0, @1, @2)";
db.Execute(save, QID, WebSecurity.CurrentUserId, A);
}
}
}
然后用GlobalFunctions.SaveQuestion(3, someVariableHere)
之类的东西来称呼它?
尝试将它们放在自己的静态类中,作为HtmlHelper
类的扩展方法实现。像这样:
public static class LabelExtensions
{
public static string Label(this HtmlHelper helper, string target,
string text)
{
return String.Format("<label for='{0}'>{1}</label>", target, text);
}
}
然后在你的Razor页面上,你这样使用它:
@Html.Label("firstName", "First Name:")
这个例子来自MSDN上的这个链接。
更新
您不应该在Razor页面中放入SaveQuestion()方法。该功能应该在控制器类中。Razor页面只生成将发送到浏览器的HTML。一旦浏览器单击某个按钮,就会发生另一个请求,在该请求期间,控制器应根据需要调用SaveQuestion()方法。此时,您可以将该代码放在任何位置,并将其包含在using
语句中,该语句引用您放入的任何命名空间。