• Orchard项目笔记一


    博客园开博了,首先感谢LXC同志,在他的催促下,我决定开始写这一系列文章。看到了市面上关于Orchard说明性的文章海洋一般,但是真正的应用在项目中的文章很是少见,于是决定将自己在进行Orchard项目进行中发现的问题和解决方案,这里包含未解决的问题,以供大家讨论。

    闲言少叙,走你。

    Orchard是一个水很深的框架,这是今天我想告诉大家的。

    应用场景:想要做一个文件上传功能。

    Orchard思维:首先在Gallery中检索是否有第三方的Module,存在,然后看看是否使用自己的应用范围,因为检索的模块显示效果比较粗糙,于是决定重用其中的Service以及Migration文件中的内容,当然还是要做一些修改,比如在Part中增加一些用于显示的字段,这导致Migration文件以及Part(Record)类需要做相应的调整。

    后台部分搞定,然后便是前台部分了。首先考虑后台要向前台传递什么参数,这里正规一点的做法是定义一个ModelView,糙一些的方法就是定义一个dynmaic对象,是否被重用是一个考虑重点。

    技术实现细节:

    1.文件上传机制。这里就不多做介绍了,我是参考的是Zveen.Attachments模块。

    2.PartialView机制。这是一种控件重用机制,MVC还是带来一些原始概念,新壶旧酒之感哈哈。因为我们需要重用页面顶端的Tab,但是我们的Tab是放在另外一个A工程中怎么办?木有问题,提取Tabs.cshtml到A工程的Views文件夹的根目录下面,然后引用A工程,在页面中写下:

    @{Html.RenderPartial("Tabs", Model.TabViewModel as TabViewModel);}

    搞定。这里传入ParitalView里面的就是一个ViewModel,重用那是必须的,所以义无反顾的定义了一个ViewModel(而不是Model,model是中间层和DB层交互,ViewModel是中间层和页面交互,中间层在Orchard里面包括:Controller,Driver,Service,Handler)。

    3.提交机制:

    @using(Html.BeginFormAntiForgeryPost(Url.Action("UploadFiles", new { contentType=contentType, contentID=Id}))){

    <div>…</div>}

    Orchard基于MVC,这里面get和post操作被严重划清界限,如果自己写的submit按钮,需要在提交范围内使用@using...的方式,“UploadFiles”就是Controller中定义了方法(切记:使用【HttpPost】进行修饰)。

  • 相关阅读:
    筛选IPV4地址
    linux查看磁盘空间大小df du fdisk stat命令
    编写shell脚本sum求1100累加和
    postman通过Cookies登录博客园
    Linux中mount挂载命令简洁使用方法
    linux如何查询文件及文件夹大小
    postman接口测试中添加不同的断言
    设计模式之状态模式
    Docker安装SQL Server
    架构漫谈读书笔记
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/2815399.html
Copyright © 2020-2023  润新知