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

在MVC下如何使用ajax实现表单内容的管理-二

发布时间:2020-12-16 01:40:37 所属栏目:百科 来源:网络整理
导读:我们下面对模块中的文件管理进行讲解: 1、模块文件列表管理: 模块文件列表是根据模块信息获取的,因此入口是带有模块ID的; 根据模块特点,我们建立一个与表结构ModuleInfo对应的AdminModuleSQLModel; publicclassAdminModuleModel{///summary序号/summar

我们下面对模块中的文件管理进行讲解:

1、模块文件列表管理:

模块文件列表是根据模块信息获取的,因此入口是带有模块ID的;

根据模块特点,我们建立一个与表结构ModuleInfo对应的AdminModuleSQLModel;

publicclassAdminModuleModel
{
///<summary>序号</summary>
[Required]
[Display(Name="序号")]
publicintID{get;set;}
///<summary>网站序号</summary>
[Required]
[Display(Name="网站序号")]
publicintSiteIdx{get;set;}
///<summary>模块名称</summary>
[Display(Name="模块名称")]
publicstringModuleName{get;set;}
///<summary>版本信息</summary>
[Display(Name="版本信息")]
publicstringVersion{get;set;}
///<summary>作者</summary>
[Display(Name="作者")]
publicstringAuthor{get;set;}
///<summary>版权所有</summary>
[Display(Name="指定配置项")]
publicstringOwner{get;set;}
///<summary>版权说明</summary>
[Display(Name="版权说明")]
publicstringCopyright{get;set;}
///<summary>有效期</summary>
[Display(Name="有效期")]
publicDateTimeAvailDate{get;set;}
///<summary>说明</summary>
[Display(Name="说明")]
publicstringNote{get;set;}
}
publicclassAdminModuleSQLModel:AdminModuleModel
{
///<summary>创建或升级用SQL</summary>
[Display(Name="创建或升级用SQL")]
publicstringInitSQL{get;set;}
///<summary>删除SQL</summary>
[Display(Name="删除SQL")]
publicstringDelSQL{get;set;}
}

这样写的原因是因为模块还要有自己的列表及管理,在那里是不需要大字段InitSQL和DelSQL信息用于展示的,因此我们将两个信息从基本信息中拿了出来,但作为我们这个页面是模块的所有信息的展示,因此我们建立一个从基本信息AdminModuleModel继承过来的包含大字段InitSQL和DelSQL信息的AdminModuleSQLModel类用于展示模块的所有内容信息。

下面我们给出Controller的代码

publicActionResultModuleDetails(intid)
{
AdminModuleSQLModelmodel=newAdminModuleSQLModel();
ModuleCtrlctrl=newModuleCtrl(null);
ModuleInfoinfo=ctrl.GetByModule((int)id);
model.ID=info.ID;
model.SiteIdx=info.SiteIdx;
model.ModuleName=info.ModuleName;
model.Version=info.Version;
model.Author=info.Author;
model.Owner=info.Owner;
model.Copyright=info.Copyright;
model.AvailDate=info.AvailDate;
model.InitSQL=ctrl.GetInitSQL(info.ID);
model.DelSQL=ctrl.GetDelSQL(info.ID);
ViewBag.ModuleFiles=(newModuleFileCtrl(null)).ListByModuleFile((int)id);
returnView(model);
}

在Controller中首先查询出model的基本信息,然后调用出基本信息外的大字段信息,这是因为ModuleCtrl 类中,这两部分是分别实现的,当然这要根据项目特点和编程习惯来定的。然后系统通过ModuleFileCtrl提取了该模块所包含的所有文件列表信息,将这一信息放到ViewBag中,命名为ModeleFiles。这样查询工作就ok了,下面我们研究如何对这一信息进行展示。

@modelVonPortal.Web.Models.AdminModuleSQLModel
@{
ViewBag.Title="Details";
Layout="~/Views/Shared/_Admin.cshtml";
}
@sectionHeadScript{
<scriptsrc="/Scripts/jquery.form.js"type="text/javascript"></script>
}
<h2>Details</h2>
<div>
<h4>模块信息</h4>
<hr/>
<dlclass="dl-horizontal">
<dt>@Html.DisplayNameFor(model=>model.ModuleName)</dt>
<dd>@Html.DisplayFor(model=>model.ModuleName)</dd>
<dt>@Html.DisplayNameFor(model=>model.Version)</dt>
<dd>@Html.DisplayFor(model=>model.Version)</dd>
<dt>@Html.DisplayNameFor(model=>model.Author)</dt>
<dd>@Html.DisplayFor(model=>model.Author)</dd>
<dt>@Html.DisplayNameFor(model=>model.Owner)</dt>
<dd>@Html.DisplayFor(model=>model.Owner)</dd>
<dt>@Html.DisplayNameFor(model=>model.Copyright)</dt>
<dd>@Html.DisplayFor(model=>model.Copyright)</dd>
<dt>@Html.DisplayNameFor(model=>model.AvailDate)</dt>
<dd>@Html.DisplayFor(model=>model.AvailDate)</dd>
</dl>
<tableclass="table"id="moduleFiles">
<tr>
<th>文件序号</th>
<th>文件名称</th>
<th>文件类型</th>
<th>文件目录</th>
<th></th>
</tr>
@foreach(VonPortal.Web.Models.ModuleFileInfofileinViewBag.ModuleFiles)
{
<tr>
<td>
@(file.ID.ToString())
</td>
<td>
@(file.Filename)
</td>
<td>
@(file.FileExt)
</td>
<td>
@(file.FilePath)
</td>
<td>
<inputtype="button"value="删除"id="ModuleFileDelete"data-bind="@(file.ID)"/>
</td>
</tr>
}
</table>
</div>

这样基本信息的展示就ok了,下面我们将开始编写View

@modelVonPortal.Web.Models.AdminModuleSQLModel
@{
ViewBag.Title="Details";
Layout="~/Views/Shared/_Admin.cshtml";
}
<h2>Details</h2>
<div>
<h4>模块信息</h4>
<hr/>
<dlclass="dl-horizontal">
<dt>@Html.DisplayNameFor(model=>model.ModuleName)</dt>
<dd>@Html.DisplayFor(model=>model.ModuleName)</dd>
<dt>@Html.DisplayNameFor(model=>model.Version)</dt>
<dd>@Html.DisplayFor(model=>model.Version)</dd>
<dt>@Html.DisplayNameFor(model=>model.Author)</dt>
<dd>@Html.DisplayFor(model=>model.Author)</dd>
<dt>@Html.DisplayNameFor(model=>model.Owner)</dt>
<dd>@Html.DisplayFor(model=>model.Owner)</dd>
<dt>@Html.DisplayNameFor(model=>model.Copyright)</dt>
<dd>@Html.DisplayFor(model=>model.Copyright)</dd>
<dt>@Html.DisplayNameFor(model=>model.AvailDate)</dt>
<dd>@Html.DisplayFor(model=>model.AvailDate)</dd>
</dl>
<tableclass="table"id="moduleFiles">
<tr>
<th>文件序号</th>
<th>文件名称</th>
<th>文件类型</th>
<th>文件目录</th>
<th></th>
</tr>
@foreach(VonPortal.Web.Models.ModuleFileInfofileinViewBag.ModuleFiles)
{
<tr>
<td>
@(file.ID.ToString())
</td>
<td>
@(file.Filename)
</td>
<td>
@(file.FileExt)
</td>
<td>
@(file.FilePath)
</td>
<td>
<inputtype="button"value="删除"id="ModuleFileDelete"data-bind="@(file.ID)"/>
</td>
</tr>
}
</table>
@using(Html.BeginForm("ModuleDetails","Admin",new{ReturnUrl=ViewBag.ReturnUrl},FormMethod.Post,new{@class="form-horizontal",role="form"}))
{
@Html.AntiForgeryToken()
<divclass="form-group">
@Html.LabelFor(model=>model.InitSQL,htmlAttributes:new{@class="control-labelcol-md-2"})
<divclass="col-md-10">
@Html.TextAreaFor(model=>model.InitSQL,new{@class="form-control",@style="margin:0px;width:100%;height:103px;"})
@Html.ValidationMessageFor(model=>model.InitSQL,"",new{@class="text-danger"})
</div>
</div>
<divclass="form-group">
@Html.LabelFor(model=>model.DelSQL,htmlAttributes:new{@class="control-labelcol-md-2"})
<divclass="col-md-10">
@Html.TextAreaFor(model=>model.DelSQL,@style="margin:0px;width:100%;height:103px;"})
@Html.ValidationMessageFor(model=>model.DelSQL,new{@class="text-danger"})
</div>
</div>
<divclass="form-group">
<divclass="col-md-offset-2col-md-10">
<inputtype="submit"value="执行"class="btnbtn-primary"/>
</div>
</div>
}
</div>

这样就完成了基本模块文件列表及模块自身信息的展示的展示功能,这里需要说明一下:

表格及模块信息的内容是没有包含在Form里面的,因为那里的操作我们将使用ajax来完成,而下面的InitSQL和DelSQL我们将采用提交的形式完成模块的SQL的初始化,以及内容的更新操作。

那么对应SQL的执行操作的Controller代码如下:

[HttpPost]
[ValidateAntiForgeryToken]
publicasyncTask<ActionResult>ModuleDetails(AdminModuleSQLModelmodel)
{
ModuleTasktask=newModuleTask(null);
stringOrgInitSQL=awaittask.GetInitSQL(model.ID);
//InitSQL每次修改后都将被执行,这就意味着每次都是新增或调整用的SQL,故每次执行的SQL会自动完成叠加存储,这样就可以保存为最完整的执行过程,以便今后重建执行。
awaittask.SetInitSQL(model.ID,OrgInitSQL+"rn"+model.InitSQL);
awaittask.SetDelSQL(model.ID,model.DelSQL);
VonCfgSectionsct=VonCfgSectionGroup.GetSectionParams("VonPortal/"+model.Owner);
stringconnName=(string)sct[sct.DefaultProvider[0]].Params["connectionName"];
//执行model.InitSQL语句,略...。
returnRedirectToAction("ModuleList");//返回模块列表,不在本文的讨论范围。
}

接下来我们将研究如何实现文件的上传和文件列表的添加。

(编辑:李大同)

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

    推荐文章
      热点阅读