asp.net mvc 的 视图(view )的模块化开发

网友投稿 259 2022-11-28

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,可见拙作:

3、Html.RenderPartial

相当于shtml里面的inclue,。只是接入一个视图,该视图并没有控制器。数据可由主视图传送给它。

下面是具体的例子:

主视图控制器:

public ActionResult Index(){……//ViewTag是自定义类new IList[2]{list,mylist};return View();}

主视图:

[html]  ​​view plain​​​ ​​​copy​​

@{Html.RenderPartial("BottomTags", (Object)ViewBag.TagArray);}

其中,BottomTags是子视图名称(BottomTags.cshtml),ViewBag.TagArray是传给它的Model。一定要强制转换,不能直接用ViewBag。

子视图BottomTags

[csharp]  ​​view plain​​​ ​​​copy​​

@using System.Text;@{//接收Model。在视图里面,Model也是一个类似Html一样的东西,无须定义就可以使用。实际上,Model是ViewData的属性。IList[] array = (IList[])Model;IList list = array[0];IList mylist = array[1];}…………

如此,子视图可无缝接合于主视图矣。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java如何利用Socket进行数据读写
下一篇:飞凌嵌入式500W摄像头介绍
相关文章

 发表评论

暂时没有评论,来抢沙发吧~