gpt4 book ai didi

asp.net-mvc-4 - 如何在 ASP.NET MVC 4 上使用带有 SPA Hot Towel 模板的本地数据库

转载 作者:行者123 更新时间:2023-12-04 18:45:21 24 4
gpt4 key购买 nike

我可能是 MVC 上最缺乏经验的人,更不用说 Hot Towel SPA 了,但我从来没有期望过基于这些技术开发一个系统。

我已经阅读了 Breeze 网站和 John Papa 的所有文档,但我只是不知道如何创建与我的数据库的交互以及如何检索数据和显示数据、添加或编辑数据,包括删除数据。

我必须在屏幕上构建一个带有大约 5 个网格的仪表板,以显示实时数据,因为它需要一些时间计算。

到目前为止 2 天我所做的只是修改了 Hot Towel 模板以显示我的项目名称,并且我更改了 Hot Towel 图标。我就是无法理解这些东西...两年来,我一直是 3 层架构 ASP.NET 网站开发人员。

任何人都可以为我提供有关如何通过此模板传递数据的指南吗?

最佳答案

我从 Hot Towel SPA 开始,但使用了其他引用资料,例如您可以在此处找到的 Durandal MovieApp 示例。 http://stephenwalther.com/archive/2013/02/08/using-durandal-to-create-single-page-apps.aspx .
我还下载并查看了包含示例的 Breeze 运行时。

在我的场景中,我将 SQL 与 Entity Framework 一起使用并创建了一个 WEBAPI Controller 并遵循了 Breeze 文档。下面是我的 Controller 除外。

 [BreezeController]
public class ProjectBillingController : ApiController
{
readonly EFContextProvider<ProjectBillingContext> _contextProvider =
new EFContextProvider<ProjectBillingContext>();

// ~/api/todos/Metadata
[HttpGet]
public string Metadata()
{
return _contextProvider.Metadata();
}


[HttpPost]
public SaveResult SaveChanges(JObject saveBundle)
{
return _contextProvider.SaveChanges(saveBundle);
}

[HttpGet]
public IQueryable<Client> Clients()
{
return _contextProvider.Context.Clients;
}
...

然后我尝试模仿Durandal Movie APP的代码和目录结构
/App 
/App/respositories
/App/repositories/repository.js
/App/viewmodels
/App/viewmodels/clients
/App/viewmodels/clients/show.js
/App/viewmodels/clients/edit.js
/App/viewmodels/clients/create.js
/App/views/clients
/App/views/clients/show.html
/App/views/clients/edit.html
/App/views/clients/create.html

就我而言,我使用了一个存储库,因为它不是任何复杂的查询,尽管对我来说这是一个开始。

但在我的存储库中,我放置了定义的 Breeze 实体管理器和一些函数来检索所有行和 1 行。代码摘录如下,
// repository.js
function getRecordLists(modelsListsObservable, errorObservable, entity) {

return breeze.EntityQuery
.from(entity)
.using(manager).execute()
.then(querySucceeded)
.fail(queryFailed);

function querySucceeded(data) {
modelsListsObservable(data.results);
logger.log('Fetched ' + entity, null, null, true);

}

function queryFailed(error) {
errorObservable("Error retrieving" + entity + " : " + error.message);
logger.error("Error retrieving" + entity + " : " + error.message, null, null, true);

}
};


function getRecord(id, clientObservable, errorObservable, entity, entityKey) {
return breeze.EntityQuery.from(entity)
.where(entityKey, "==", id)
.using(manager).execute()
.then(querySucceeded)
.fail(queryFailed);

function querySucceeded(data) {
clientObservable(data.results[0]);
logger.log('Fetched a record from ' + entity, null, null, true);
}

function queryFailed(error) {
errorObservable("Error retrieving a record from " + entity + ": " + error.message);
logger.error("Error retrieving a record from " + entity + ": " + error.message, null, null, true);
}

};

// show.js
define(function (require) {

var repository = require("repositories/repository");
var app = require('durandal/app');
var router = require("durandal/plugins/router");
var logger = require('services/logger');
var models = ko.observableArray();
var error = ko.observable();

return {
models: models,
error: error,
deleteRecord: deleteRecord,

activate: function (data) {
return repository.getRecordLists(models, error, "Resources");
}
};

我希望这对你有一点帮助。我也在学习这个,有些东西可能不是最佳实践,但它足以让我学习。

谢谢

关于asp.net-mvc-4 - 如何在 ASP.NET MVC 4 上使用带有 SPA Hot Towel 模板的本地数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15247260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com