asp.net mvc 的 视图(view )的模块化开发
目前所在项目有一个视图,几个模块都涉及到,对应不同的开发人员,虽然有SVN在管理,但代码冲突时有发生。并且大家的代码挤于其中,逻辑比较容易混乱。
将不同部件独立出去,实有必要。
分离方式,我知道的有 3 种:
1、利用JS动态加载子视图
将分离内容放置在一个视图里面,视图还可以对应有控制器。主视图加载过程中,或者运行过程中,再用JS去请求、加载这个子视图:
var div = ...
var url = "@Url.Content("~/controller/GetDataByView?id=")" + id;
getViewRequest(url, {}, function(data){
div.empty().html(data);
}
); function getViewRequest(url, params, onsuccess, onerror) {
$.ajax(
{
type: 'get',
url: url,
data: params,
contentType: "text/html; charset=utf-8",
success: function (data) {
if (onsuccess != undefined && onsuccess != null) {
onsuccess(data);
}
},
error: function (data) {
if (onerror != undefined && onerror != null) {
onerror(data);
}
}
});
}
2、Html.RenderAction
这个与1的区别主要是加载方式不同。1是主视图出来后,在前端用JS动态加载,会比较迟才出来;2是与主视图一同输出到前端。
2与3的区别在于,2的数据来源于控制器,3的数据来源于主视图。3没有控制器。
有关Html.RenderAction,可见拙作:
http://blog.csdn.net/leftfist/article/details/17115757
3、Html.RenderPartial
相当于shtml里面的inclue,<!--#include virtual="/template/css.htm"-->。只是接入一个视图,该视图并没有控制器。数据可由主视图传送给它。
下面是具体的例子:
主视图控制器:
- public ActionResult Index()
- {
- ……
- //ViewTag是自定义类
- ViewBag.TagArray = new IList<ViewTag>[2]{list,mylist};
- return View();
- }
主视图:
- <div class="bottomTabs" style="bottom: 36px; left: 240px;">
- @{Html.RenderPartial("BottomTags", (Object)ViewBag.TagArray);}
- </div>
其中,BottomTags是子视图名称(BottomTags.cshtml),ViewBag.TagArray是传给它的Model。一定要强制转换,不能直接用ViewBag。
子视图BottomTags
- @using System.Text;
- @{
- //接收Model。在视图里面,Model也是一个类似Html一样的东西,无须定义就可以使用。实际上,Model是ViewData的属性。
- IList<ViewTag>[] array = (IList<ViewTag>[])Model;
- IList<ViewTag> list = array[0];
- IList<ViewTag> mylist = array[1];
- }
- <ul class="navList clx" id="J_GisSiteNav">……</ul>
- <script type="text/javascript">……</script>
如此,子视图可无缝接合于主视图矣。
asp.net mvc 的 视图(view )的模块化开发的更多相关文章
- ASP.NET MVC 5 - 视图
在本节中,你要去修改HelloWorldController类,使用视图模板文件,在干净利索地封装的过程中:客户端浏览器生成HTML. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所 ...
- asp.net mvc 部分视图加载区别
ASP.NET MVC 部分视图 ASP.NET(11) 版权声明:本文为博主原创文章,未经博主允许不得转载. [部分视图] ASP.NET MVC 里的部分视图,相当于 Web Form 里的 ...
- [转]ASP.NET MVC 5 - 视图
在本节中,你要去修改HelloWorldController类,使用视图模板文件,在干净利索地封装的过程中:客户端浏览器生成HTML. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所 ...
- Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html
Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...
- MVC中视图View向控制器传值的方法
MVC中视图View向控制器传值的方法步骤如下: 1.index页面: 页面中只需要一个触发事件的按钮
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染
对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的界面呈现工作是由浏览器完成的,Web应用的原理是通过Http协议从服务器上获取到 ...
- 转发-基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现
基于ASP.NET MVC 4/5 Razor的模块化/插件式架构实现 概述 在日常开发中, 我们经常谈起模块化/插件化架构,这样可既可以提高开效率,又可以实现良好的扩展性,尤其对于产品化的系统有 ...
- ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理
ASP.NET没有魔法——ASP.NET MVC Razor与View渲染 对于Web应用来说,它的界面是由浏览器根据HTML代码及其引用的相关资源进行渲染后展示给用户的结果,换句话说Web应用的 ...
- Asp.Net MVC<八>:View的呈现
ActionResult 原则上任何类型的响应都可以利用当前的HttpResponse来完成.但是MVC中我们一般将针对请求的响应实现在一个ActionResult对象中. public abstra ...
- ASP.NET MVC部分视图PartialView的使用
在ASP.NET MVC项目中,部分视图PartialVieww使用很广.它实际就是在ASP.NET环境的用户自定义控件UserControl. 在控制器中,创建一个视图操作Action和一个部分视图 ...
随机推荐
- 在vue中场景,循环行,点击当前行编辑数据
当前列表 点击编辑,行变为编辑框. <Row style="color:#999;margin-bottom:11px"> <Row style="ma ...
- Windows下如何使用CMD命令进入MySQL数据库
1.打开[开始]>[运行]输入[cmd]单击[确定]后出现CMD命令黑色窗口,这就是我们说的CMD命令行,或者使用快捷键Windows键(在键盘上有个Windows标志的按键)+R输入cmd后回 ...
- 洛谷——P2417 课程
P2417 课程 裸地匈牙利算法, 贪心的不断匹配,若没匹配,则匹配:反之,判断与之匹配的点能否在找另一个点匹配,若能,抢多这个点与之匹配 时间复杂度$O(n\times m)$ #include&l ...
- 【2018 1月集训 Day1】二分的代价
题意: 现在有一个长度为 n的升序数组 arr 和一个数 x,你需要在 arr 中插入 x. 你可以询问 x 跟 arri 的大小关系,保证所有 arri 和 x 互不相同.这次询问的代价为 cost ...
- 笔试算法题(01):字符串倒置 & 八皇后问题
出题:将字符串“ABCD1234efgh”进行前后对调: 分析: 常见的考查指针使用的案例,知道字符串长度之后,依次交换位置i以及位置(length-1-i)上的内容,直到重叠: 注意不能直接修改指针 ...
- Layui表格之多列合并展示
前言: 当我们在使用Layui的时候,有时表格中的列比较多,展示出来肯定是有问题的,这样就不得不舍弃一些列不展示,不展示是一种解决方案,但是更好的解决方案应该是合并展示. 这里的展示不是合并单元格,合 ...
- MySQL-----用户和授权管理
用户管理: 创建用户: create user '用户名'@'用户pc的ip地址(ip可以写精准点的,也可以是网段的,也可以写一个‘’%‘’提所有)' identified(设置密码) by '密码 ...
- angular2集成highchart
集成highchart的配置困扰了我很久,今天终于解决了: 1.修改tsconfig.app.json: "compilerOptions": { //... "type ...
- PCB中贴片元器件的引脚规范(allegro)
表贴的芯片一个引脚焊盘的宽度: 当芯片引脚间的间距>=26mil时,计算公式是(脚宽度+8mil) 当芯片引脚的间距<26mil时,计算公式是(引脚间距/2+1) 表贴的芯片一个引脚焊盘的 ...
- npm 发包
前几天封装了公用的locaStorage组件,当然封装后需要发布npm官网,于是摸索了一番终于搞定了,总结下来希望对大家有所帮助 npm安装的package一般支持下面几大类: 本地包 url远程包 ...