【问题标题】:Razor WebPage: How to make data from the database alvailable to several pages?Razor 网页:如何使数据库中的数据可用于多个页面?
【发布时间】:2016-10-12 12:37:59
【问题描述】:

我的问题和this one很相似。

我从数据库中为我的两个页面获取相同的数据(对象的属性,每一行代表一个对象),一个页面用于编辑数据,一个页面用于查看数据。为了减少冗余代码并改善维护,我想编写只加载一次数据的代码。

我的想法是使用_PageStart.cshtml。但这样我只能将字符串存储在PageData 数组中,但不能存储对象。

那么,让数据库中的行在多个页面上可用的最佳方法是什么?

这是我从数据库中获取数据的方式:

var db = Database.Open("mydb");
String query = "select * from motors";
var rows = db.Query(query);

System.Data.DataTable motors = new System.Data.DataTable();
motors.Columns.Add("posX", typeof(int));
motors.Columns.Add("posY", typeof(int));

IEnumerator<dynamic> en = rows.GetEnumerator();
while (en.MoveNext()) {
    motors.Rows.Add(en.Current.posX, en.Current.posY);
}

我想访问不同页面上的 DataTable motors

【问题讨论】:

    标签: razor webmatrix asp.net-webpages


    【解决方案1】:

    您所要做的就是创建一个只有您的代码的页面,然后在您希望它显示的任何页面上使用:

    @RenderPage("~/yourpage.cshtml");
    

    【讨论】:

    • 我尝试访问 DataTable motors。 Visual Studio(以及我运行页面后的服务器)说 当前上下文中不存在名称“motors”。
    • 对不起,你还需要把你的输出放在代码页上,无论你想显示多少次。如果您只想访问部分数据,则可以将查询放在布局页面中代码的顶部,然后使用 @Page.motors top 调用它。但是您需要将变量 motor 命名为 Page.motors。
    • “输出”是什么意思?并且不可能将代码放入yourpage.cshtml 并像@yourpage.motors 那样访问DataTable?
    • 我能看到你成功展示你的DataTable的页面的完整代码吗?然后我可以告诉你具体该怎么做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多