我有很多页面使用相同的变量。我想在一个页面中创建这些,所以我不必一遍又一遍地输入它们。我该怎么做?
我尝试了_appStart.cshtml和_PageStart.cshtml,但是当我运行我的内容页面时,我收到错误“当前上下文中名称selectedData不存在”
这是我的_PageStart.cshtml :(也试过_appstart.cshtml)
@{
var db = Database.Open("razortest");
var selectQueryString = "SELECT * FROM tbl_stasjon ORDER BY nr";
var selectedData = db.Query(selectQueryString);
}
我的所有网页都包含以下内容:
@foreach(var row in (selectedData)) {
html here...
}
答案 0 :(得分:2)
对于一个相当直接的解决方案,您可以在App_Code
中创建一个静态类/方法,它返回您的查询对象,然后在您需要的地方调用该方法:
using System;
using System.Collections.Generic;
using System.Web;
using WebMatrix.Data;
public static class MyClass
{
public static IEnumerable<dynamic> GetData()
{
var db = Database.Open("razortest");
var selectQueryString = "SELECT * FROM tbl_stasjon ORDER BY nr";
return db.Query(selectQueryString);
}
}
然后在您的脚本中,您可以:
@foreach(var row in MyClass.GetData()) {
html here...
}
可能会有更优雅和高效的方法来实现这一目标,但它们取决于你究竟在做什么。为了遵循教程,这应该符合您的目的。
答案 1 :(得分:0)
您可以使用会话并尝试使用控制器。
见
覆盖控制器中的OnActionExecuting
(使用会话不可用的构造函数)
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (Session != null)
Session["selectedData"] = "Hello World";
}
并在行动中
Public ActionResult View1(){
return View(Session["selectedData"];
}
在您的视图中,您可以处理此数据
@{
ViewBag.Title = Model;
}
这是一个带字符串的简单解决方案。您可以创建强类型视图,并获得一种非常灵活的方式来处理视图中的这些数据。