.net MVC实现局部刷新加载html

.net MVC中如何使用iframe实现局部刷新

今天有人遇到在MVC中局部刷新问题,可以防止整个也页面进行刷新,出现抖动现象。

网页中的布局还是选用的是table布局,其实DIV+CSS不是一样的原理和操作过程,这里只是示范怎么进行局部刷新。

首先在VS新建一个MVC工程,保证运行正常。

接下来修改Home/Index视图,如下:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>  
  
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">  
    主页  
</asp:Content>  
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">  
    <%--<h2><%: ViewData["Message"] %></h2>--%>  
    <table border="0" cellspacing="0" cellpadding="0" width="100%">  
        <tr style="width: 1000px; height: 100px">  
            <td style="width:1000px" colspan="2">  
            </td>  
        </tr>  
        <tr style="height: 400px">  
            <td style="width: 200px">  
                <button id="btOne" onclick="partRefresh()">click</button>  
            </td>  
            <td>  
                <iframe id="iframe1Id" name="I1" style="height: 370px; width: 860px" src="http://www.sina.com">  
                </iframe>  
            </td>  
        </tr>  
    </table>  
</asp:Content>

其次,我们要在写button单击事件partRefresh()的js脚本,如下:

<script type="text/javascript">  
    function partRefresh() {  
//            document.getElementById("iframe1Id").src = "http://www.baidu.com";  
        document.getElementById("iframe1Id").src = "/Home/Baidu";  
    }  
</script>

这里的就是脚本需要方队位置,只要在标签content中即可。

接下来我们看看JS脚本中的一行代码:

document.getElementById("iframe1Id").src = "/Home/Baidu";  

在这里的src指定了网址,既可以是我们熟知的各种网站,如 http://www.baidu.com 也可以是我们项目中的视图文件,如这里的“/Home/Baidu”就是HomeController对应的视图Baidu。下面是我的Baidu.aspx文件内容.

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Baidu</title>
</head>
<body>
    <div>
       <iframe src="http://www.163.com" style="height: 421px; width: 1165px"></iframe>
    </div>
</body>
</html>

至此,我们的工作完成了,能够进行局部刷新了,下面是我的截图:

页面加载后的截图:

下图是在单击按钮(注对应的js文件中的是 document.getElementById("iframe1Id").src = "/Home/Baidu";)

下图对应的单击按钮之后的截图(注:js中对应的是document.getElementById("iframe1Id").src = "http://www.baidu.com";)

在.NET MVC下不用iframe实现局部加载html

最近在做个后台系统,之前都是用iframe来实现加载内容,左侧菜单不刷新。但一直不喜欢这种方法,有许多弊端。今天自己在网上查找了一番后找到了比较好的替代方案:

一、利用html的锚点标记来实现无刷新页面加载:

Index.cshtml:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>局部刷新demo</title>
    @Scripts.Render("~/bundles/jquery")
</head>
<body>
    <a href="#/~Demo1">Demo1</a>
    <br>
    <a href="#/~Demo2">Demo2</a>
    <br>
    <a href="#/~Demo3">Demo3</a>
    <br>
    <div id="content"><h1>Index</h1></div>
    <script type="text/javascript">
      $('a').each(function() {
        this.onclick = function() {
          $.get(this.href.split('#/~')[1], function(data) {
            $('#content').html(data);
          });
        };
      });
    </script>
</body>
</html>

Demo2.cshtml:

<h2>Demo2</h2>
<h2>Demo2</h2>

其它,demo1,demo3就不贴上来了。

DemoController:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MvcDemo.Controllers
{
    public class DemoController : Controller
    {
        // GET: Demo
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult Demo1()
        {
            return View();
        }
        public ActionResult Demo2()
        {
            return View();
        }
        public ActionResult Demo3()
        {
            return View();
        }
    }
}

然后运行就可以看到效果了。弊端就是地址栏路径会显示点击加载页面的路径。

二、利用jQuery.load()方法

方法说明:load(url,[data],[callback]);

load方法与html方法类似,不过load是远程加载html代码,而且被加载的html里包含的js可以正常运行。废话不多说,上代码:

Index.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>局部刷新demo</title>
    @Scripts.Render("~/bundles/jquery")
</head>
<body>
    <a href="#" data-link="Demo1">Demo1</a>
    <br>
    <a href="#" data-link="Demo2">Demo2</a>
    <br>
    <a href="#" data-link="Demo3">Demo3</a>
    <br>
    <div id="content"><h1>Index</h1></div>
    <script type="text/javascript">
        $('a').each(function() {
            this.onclick = function () {
                $('#content').load($(this).data("link"));
            };
        });
    </script>
</body>
</html>

注意是显示内容的容器调用load。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索iframe
, 文件
, view
, this
using
mvc 局部刷新、mvc局部刷新页面、spring mvc 局部刷新、asp.net mvc局部刷新、mvc ajax局部刷新,以便于您获取更多的相关知识。

时间: 2024-11-13 07:33:56

.net MVC实现局部刷新加载html的相关文章

jquery实现界面无刷新加载登陆注册_jquery

官网的登陆注册每次要跳转到另一个界面,能不能做一个简单的,在界面弹出一个框框登陆,我想了想做了这么一个案例,大家来看看成不成 贴上代码,实现了在同一个弹出窗上加载了登陆注册功能!可自由点击!当然样式丑了一些!还请见谅!demo在下面 1这里是html内容 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transi

php+jquery+html实现点击不刷新加载更多的实例代码_php实例

基本原理:页面载入时,jQuery向后台请求数据,PHP通过查询数据库将最新的几条记录显示在列表页,在列表页的底部有个"更多"链接,通过触发该链接,向服务端发送Ajax请求,后台PHP程序得到请求参数,并作出相应,获取数据库相应的记录并以JSON的形式返回给前台页面,前台页面jQuery解析JSON数据,并将数据追加到列表页.其实就是Ajax分页效果. HTML 首先要引入jquery库和jquery.more.js插件,jquery.more.js已经将许多功能都封装好了,并提供了参

Android仿支付宝笑脸刷新加载动画的实现代码_Android

看到支付宝的下拉刷新有一个笑脸的动画,因此自己也动手实现一下.效果图如下: 一.总体思路 1.静态部分的笑脸. 这一部分的笑脸就是一个半圆弧,加上两颗眼睛,这部分比较简单,用于一开始的展示. 2.动态笑脸的实现. 2.1.先是从底部有一个圆形在运动,运动在左眼位置时把左眼给绘制,同时圆形继续运动,运动到右眼位置时绘制右眼,圆形继续运动到最右边的位置. 2.2.当上面的圆形运动到最右边时候,开始不断绘制脸,从右向左,脸不断增长,这里脸设置为接近半个圆形的大小. 2.3.当脸画完的时候,开始让脸旋转

js-点击A页面链接,B页面无刷新加载内容

问题描述 点击A页面链接,B页面无刷新加载内容 比如百度音乐,在A页面不管点击多少个音乐,都只打开一个B页面并且无刷新加载播放.怎么用JS和其它编程语言来实现? 解决方案 <a target='musicBox' href=""/music"">播放1</a><a target='musicBox' href=""/music"">播放2</a><a target='mus

使用Yii整合的pjax(pushstate+ajax)实现无刷新加载页面_AJAX相关

Pjax是啥? Pjax = history.pushState + Ajax = history.pushState + Async JS + XML(xhr?) BOM对象history被增强了一波,主要是对历史栈的操作,以前只有 replace , go 之类的,都会跳转并刷新整个页面,现在有了 pushState , replaceState 等等单纯操作历史栈的方法,只是单纯修改历史栈里的内容,没有副作用(页面不会跳转刷新) PJAX效果 通过url可以跟踪ajax的动态加载内容.这种

Android:下拉刷新+加载更多+滑动删除实例讲解_Android

         小伙伴们在逛淘宝或者是各种app上,都可以看到这样的功能,下拉刷新和加载更多以及滑动删除,刷新,指刷洗之后使之变新,比喻突破旧的而创造出新的,比如在手机上浏览新闻的时候,使用下拉刷新的功能,我们可以第一时间掌握最新消息,加载更多是什么nie,简单来说就是在网页上逛淘宝的时候,我们可以点击下一页来满足我们更多的需求,但是在手机端就不一样了,没有上下页,怎么办nie,方法总比困难多,细心的小伙伴可能会发现,在手机端中,有加载更多来满足我们的要求,其实加载更多也是分页的一种体现.小伙

RecyclerView 的数据加载 包括分页加载 和刷新加载 头尾部的提示处理

问题描述 RecyclerView 的数据加载 包括分页加载 和刷新加载 头尾部的提示处理 RecyclerView 如何实现分页加载网络数据和刷新加载 头尾部的提示处理?

hibernate3-spring mvc OpenSessionInViewFilter hibernate 懒加载问题

问题描述 spring mvc OpenSessionInViewFilter hibernate 懒加载问题 之前做了一个项目是使用 springmvc 加hibernate 做的, 并且使用了 hibernate 的懒加载有用到OpenSessionInViewFilter, 现在做另一个项目, 基础代码都是上个项目的代码: 目前调试在调试权限模块, 核对了上个项目的代码基本完全一致,但是这个项目的老是无法使用懒加载,加载报 org.hibernate.LazyInitializationE

android中PullToRefreshListView上下拉刷新加载怎么做?

问题描述 android中PullToRefreshListView上下拉刷新加载怎么做? 唉..,我是新手 ,不知道用这个东西,好像要关联个工程,才能用,求大神详细介绍答案,谢谢了! 解决方案 http://blog.csdn.net/losetowin/article/details/18261389 你看看 解决方案二: 引用下它提供的库就可以了