MVC加载view的方式

时间:2022-08-29 19:00:56

主要有

  • Html.ActionLink
  • Html.RenderPartial
  • Html.RenderAction
  • Html.Partial
  • Ajax.ActionLink
  • load
  • 浏览器对象模型 (BOM)(Browser Object Model)

html中

1. Html.ActionLink

比如html代码

@Html.ActionLink("查看", "index", "home",  new { ID="first"}, new { @class="mybutton"})     

查看页面上形成的元素是锚标签。

<a class="mybutton" href="/home/index?id=first">查看</a>

2. Html.RenderPartial与 Html.RenderAction

Html.RenderPartial与Html.RenderAction 这个两个方法都是用于把MVC用户控件嵌入到View中。

Html.RenderPartial是直接将MVC用户控件嵌入到界面上

Html.RenderAction是通过Controller中的Action来调用MVC用户控件

在MVC 2.0中,新增加了Html.RenderAction();这个方法RenderPartial有点不一样,他是直接重新执行一次Controller → Model → View的顺序,然后把产生的页面带回到原来的View中再回传。

所以Html.RenderAction中传递的参数是执行的Controller和Action名称。

若是在控制器中的某个方法只能让Html.RenderAction()调用时,可以在方法上添加特性[ChildActionOnly],其它的地方无法访问。

public class ChildActionOnlyTestController : Controller
{
[ChildActionOnly]
public ActionResult GetSupplierList()
{
var controller = new SupplierController();
return controller.SupplierList();
}
}

MVC加载view的方式MVC加载view的方式

3. Html.RenderPartial和Html.Partial

语法上不同

 @Html.Partial 对应  @{Html.RenderPartial(....);}

在Razor中,下面2中写法是等价的:

@Html.Partial("ViewName")

@{Html.RenderPartial("ViewName");  }

使用 Html.Partial, 把Partial View的输出保存到变量中, 但是Html.RenderPartial不行. Html.RenderPartial会在执行的时候,直接把输出写进Response.

两种方法都是不走控制器的,所以传递参数的时候用 ViewDataDictionary

比如说控制器中定义

Person p = new Person()
p = p.Get(ID);
ViewDataDictionary vd = new ViewDataDictionary();
vd.Add("person",p);
vd.Add("id",p.id);
ViedData["id"]= vd;

那么在进入view中的时候

可以在view里的某一处向下一个view直接传递数据,而不用经过控制器

中介view

<div>
@{Html.RenderPartial("~/views/home/check", ViewData["vd"] as ViewDataDictionary)}
</div>

然后在最终的页面上就可以直接使用 ViewData["person"] 和 ViewData["id"]

@{
var p = ViewData["person"] as Person
}
<input type = "text" value="@ViewData["id"]" />

如果遇到一个主view中嵌套很多partialView的情况,这种方法是比较方便的,因为可以一次性把所有数据都传到主view上,然后在用这种加载的方法依次向下传递

4. Ajax.ActionLink

Ajax 属性的ActionLink方法可以创建一个具有异步行为的锚标签。

ActionLink方法的第一个参数指定了链接文本,第二个参数是要异步调用的操作的名称。类似于同名的HTML辅助方法,AJAX辅助方法ActionLink也提供了各种重载版本,
用来传递控制器名称、路由值和HTML特性。

//使用时先引入 
<script src="@Url.Content("~/Scripts/jquery-1.5..min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> @Ajax.ActionLink("首页", "Index", "Home", new AjaxOptions() { UpdateTargetId = "body_content",
HttpMethod = "Post",
InsertionMode = InsertionMode.Replace,
Confirm = " 您确定要删除该记录吗?该操作不可恢复!" })

生成的标签是

<a href="/Home/Index" data-ajax-update="#body_content"
data-ajax-mode="replace"
data-ajax-method="Post"
data-ajax-confirm="您确定要删除该记录吗?该操作不可恢复!"
data-ajax="true"></a>

Confirm我们看到这个属性,获取或设置在请求之前显示在确认窗口中的消息,不难理解我们可以通过这个内容来实现我们alert的消息提示功能。(是不是有种要拜托javascript的感觉呢?其实机制仍然是javascript)

MVC加载view的方式

MVC加载view的方式

javascript中

load()方法

1. 名为 load 的 jQuery 事件方法。

语法

$(selector).load(function

当指定的元素(及子元素)已加载时,会发生 load() 事件。

该事件适用于任何带有 URL 的元素(比如图像、脚本、框架、内联框架)。

MVC加载view的方式

2. 名为 load() 的 jQuery Ajax 方法

load() 方法通过 AJAX 请求从服务器加载数据,并把返回的数据放置到指定的元素中。

load(url,data,function(response,status,xhr))
$("#table").load("../home/index", { ID: $("#ID").val() }, function () {
alert("加载完成");
});
参数 描述
url 规定要将请求发送到哪个 URL。
data 可选。规定连同请求发送到服务器的数据。
function(response,status,xhr)

可选。规定当请求完成时运行的函数。

额外的参数:

  • response - 包含来自请求的结果数据
  • status - 包含请求的状态("success", "notmodified", "error", "timeout" 或 "parsererror")
  • xhr - 包含 XMLHttpRequest 对象

浏览器对象模型 (BOM)

  • window.open(url) - 打开新窗口
  • window.close() - 关闭当前窗口
  • window.moveTo() - 移动当前窗口
  • window.resizeTo() - 调整当前窗口的尺寸
  • window.location.replace(url); 在当前窗口加载新页面
  • window.location.reload();刷新当前窗口

MVC加载view的方式的更多相关文章

  1. 一步一步重写 CodeIgniter 框架 &lpar;6&rpar; —— 实现在控制器Controller中加载View

    1. 控制器将模型类获得的数据,传递给视图进行显示,所以视图必须负责接收数据,另外重要的一点是当模型和视图分开后,多个模型的数据可以传递给一个视图进行展示,也可以说一个模型的数据在多个不同的视图中进行 ...

  2. Spring之IOC容器加载初始化的方式

    引言 我们知道IOC容器时Spring的核心,可是如果我们要依赖IOC容器对我们的Bean进行管理,那么我们就需要告诉IOC容易他需要管理哪些Bean而且这些Bean有什么要求,这些工作就是通过通过配 ...

  3. Spring mvc 加载HTML静态页面

    看到网上大部分举例Spring MVC加载静态页面HTML方式都还要通过controller, 根据js和css文件的加载模式,html也同样可以直接加载 在spring的配置文件中例如 *-serv ...

  4. Android中加载事件的方式

    Android中加载事件的方式 通过内部类的方式实现 通过外部类的方式实现 通过属性的方式实现 通过自身实现接口的方式实现 通过内部类的方式实现 Demo btn_Login.setOnClickLi ...

  5. UE4中资源加载资源的方式

    在UNITY中,我们加载资源一般是通过Resources.Load(path).即可完成.该方法返回的是Object类型.如果你想要的是材质或者贴图等等,只要价格类型转换的关键字就可以了例如 as M ...

  6. 关于实现Extjs动态加载类的方式实现

    Extjs4以前的版本没有动态加载类的方式,这样开发程序的时候加载很多的js会导致加载变慢,由于本人一直使用extjs3的版本进行开发,于是简单实现了一个动态加载类的管理器,使用方式与extjs4的方 ...

  7. UIStoryboard类介绍(如何从Storyboard中加载View Controller)

    如何从Storyboard中加载View Controller? 1. 首先了解下UIStoryboard类: @class UIViewController; @interface UIStoryb ...

  8. EF中加载实体的方式

    EF中的查询执行时机:1. foreach进行枚举2. ToArray.ToList.ToDictionary3. Linq的一些操作,如First.Any4. DbSet上的Load操作.DbEnt ...

  9. EF加载实体的方式

    原文:Loading Related Entities EF加载数据的方式: 预加载 eager loading 延迟加载 lazy loading 显示加载 explicit loading 预先加 ...

随机推荐

  1. &lbrack;C&num;&rsqb;想说一说嵌套数组

    今天早上,随感而发,随便写了点东西.结果下午的时候看了看评论,吓我一跳.估计是不是写代码的人看散文看得太少了,还是因为现在的人读的书太少了,似乎有有些大惊小怪. 关于Y美女,我声明一下,尽管她很脱俗, ...

  2. TYVJ1338 QQ农场

    时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 Sandytea前段时间沉迷于QQ农场中……一天夜里,他梦见来到好友X的农场上…… 描述 这个农场和游戏中略有 ...

  3. Unity3D 之 iTween 相关

    有过 Flash 开发经验的朋友,对这个 iTween 应该感到非常熟悉吧,在 Flash 平台有一款功能几乎一样的插件 TweenLite,至于哪个先哪个后,有没有相互借鉴之类的就不在讨论范围了. ...

  4. Eclipse 开发WEB项目所遇问题 WebContent WebRoot

    原文:http://blog.sina.com.cn/s/blog_525960510100jo0j.html 最近在做Web 项目时,新建了一个WEB 项目,如webdemo,eclipse默认的b ...

  5. VS2013 RC 此模板尝试加载组件程序集 &OpenCurlyDoubleQuote;NuGet&period;VisualStudio&period;Interop&comma; Version&equals;1&period;0&period;0&period;0&comma; Culture&equals;neutral&period;&period;&period;&period;&period;&period;&period;&period;&period;

    微软发布了vs2013的RC版本,更新了自己机器上的vs,在创建项目过程中,发现出现如题的相关错误,查了相关msdn的资料,才了解到vs已经全面切换到使用NuGet这个第三方开源工具来管理项目包和引用 ...

  6. 利用jquery&plus;iframe做一个ajax上传效果

    以下是自学it网--中级班上课笔记 网址:www.zixue.it html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict ...

  7. ESLint 使用入门 - 来自推酷

    在团队协作中,为避免低级 Bug.产出风格统一的代码,会预先制定编码规范.使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量. 在以前的项目中,我们选择 JSHint 和 ...

  8. Java - Java入门(2-1am)

    第一讲.Java入门 1. 计算机语言是人和计算机进行交互的一种工具,人们通过使用计算机语言编写程序来向计算机施令,计算机则执行程序,并把结果输出给用户. 2. 机器语言:由0.1序列构成的指令码组成 ...

  9. 常用的phpdoc标签

    标签 说明 @access public|private|protected 描述了访问级别.当使用反射技术时,这个标签不是很有用,这是因为API能够自动获取这一特性.在PHPDoc中,用它可略去私有 ...

  10. 2-Twenty First Scrum Meeting-20151221

    任务安排 成员 今日完成 明日任务 闫昊 请假(数据库)   唐彬 请假(数据库)   史烨轩  尝试使用downloadmanager对notification进行更新  尝试使用downloadm ...