加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – 如何在ASP.NET MVC 4上使用SPA热毛巾模板的本

发布时间:2020-12-16 07:05:28 所属栏目:asp.Net 来源:网络整理
导读:我可能是MVC中最缺乏经验的人,更不用说Hot Towel SPA了,但是我希望能够生产出基于这些技术的系统. 我已经阅读了Breeze网站和John Papa的所有文档,但我根本不知道如何创建与数据库的交互并检索数据和显示数据,添加或编辑数据,包括删除数据. 我必须在屏幕上构
我可能是MVC中最缺乏经验的人,更不用说Hot Towel SPA了,但是我希望能够生产出基于这些技术的系统.

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

我必须在屏幕上构建一个大约5个网格的仪表板,显示实时数据,因为它会进行一些时间计算.

到目前为止我所有的2天都修改了热毛巾模板以显示我的项目名称,我已经更改了热毛巾图标.我无法绕过这些东西……两年来,我一直是一个三层架构的ASP.NET网站开发人员.

有人可以给我指导如何通过这个模板传递数据吗?

解决方法

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

在我的场景中,我使用带有实体框架的SQL并创建了一个WEBAPI控制器并遵循breezejs文档.我的控制器除外.

[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电影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

在我的情况下,我使用了一个存储库,因为它不是任何复杂的查询,虽然对我来说它是一个开始.

但在我的存储库中,我放置了定义的breezejs实体管理器和一些函数来检索所有行和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,true);

    }

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

    }
};


function getRecord(id,clientObservable,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,true);
    }

    function queryFailed(error) {
        errorObservable("Error retrieving a record from " + entity + ": " + error.message);
        logger.error("Error retrieving a record from " + entity + ": " + error.message,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");
        }
    };

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

谢谢

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读