<html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8"><meta name="generator" content="pdf2htmlEX"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/base.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/fancy.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/16513002/raw.css"><script src="https://csdnimg.cn/release/download_crawler_static/js/compatibility.min.js"></script><script src="https://csdnimg.cn/release/download_crawler_static/js/pdf2htmlEX.min.js"></script><script>try{pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});}catch(e){}</script><title></title></head><body><div id="sidebar" style="display: none"><div id="outline"></div></div><div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/16513002/bg1.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x2 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">一个<span class="_ _0"></span>一个<span class="_ _1"></span><span class="ff2">MVC<span class="_ _2"></span> HTM<span class="_ _2"></span>L</span>帮<span class="_ _2"></span>助器<span class="_ _2"></span>以异步<span class="_ _2"></span>加载<span class="_ _2"></span>部分<span class="_ _2"></span>视图<span class="_ _3"></span>帮助<span class="_ _2"></span>器以<span class="_ _2"></span>异步<span class="_ _2"></span>加载部<span class="_ _2"></span>分视<span class="_ _2"></span>图</div><div class="t m0 x2 h4 y3 ff1 fs1 fc0 sc0 ls0 ws0">介绍<span class="_ _4"></span>介绍</div><div class="t m0 x2 h5 y4 ff1 fs2 fc0 sc0 ls0 ws0">有时,索<span class="_ _2"></span>引页的加<span class="_ _2"></span>载时间可<span class="_ _2"></span>能太长,通<span class="_ _2"></span>常是因为<span class="_ _2"></span>所需的数<span class="_ _2"></span>据来自长时<span class="_ _2"></span>间运行的<span class="_ _2"></span>进程或资<span class="_ _2"></span>源缓慢(<span class="_ _2"></span><span class="ff3">DB</span>缓慢,<span class="_ _2"></span><span class="ff3">Web</span>服务延<span class="_ _2"></span>迟,特</div><div class="t m0 x2 h5 y5 ff1 fs2 fc0 sc0 ls0 ws0">定数据计<span class="_ _2"></span>算等)。</div><div class="t m0 x2 h5 y6 ff1 fs2 fc0 sc0 ls0 ws0">当然,首<span class="_ _2"></span>先要做的<span class="_ _2"></span>是尝试通<span class="_ _2"></span>过数据库优<span class="_ _2"></span>化,代码<span class="_ _2"></span>审查,数<span class="_ _2"></span>据分页等方<span class="_ _2"></span>式清除这<span class="_ _2"></span>些问题。<span class="_ _2"></span><span class="ff3"> <span class="_ _5"></span><span class="ff1">但是,作<span class="_ _2"></span>为最后的<span class="_ _2"></span>机会,要<span class="_ _2"></span>改善用户</span></span></div><div class="t m0 x2 h5 y7 ff1 fs2 fc0 sc0 ls0 ws0">在浏览器<span class="_ _2"></span>前等待的<span class="_ _2"></span>体验,我<span class="_ _2"></span>们可以做的<span class="_ _2"></span>就是尽快<span class="_ _2"></span>为他提供<span class="_ _2"></span>一些东西,<span class="_ _2"></span>并在有数<span class="_ _2"></span>据时尽快<span class="_ _2"></span>完成页面<span class="_ _2"></span>。</div><div class="t m0 x2 h4 y8 ff1 fs1 fc0 sc0 ls0 ws0">部分视<span class="_ _2"></span>图和<span class="_ _6"></span>部分视<span class="_ _2"></span>图和<span class="_ _1"></span><span class="ff2">HtmlHelp<span class="_ _2"></span>er</span>扩展<span class="_ _2"></span>方法<span class="_ _7"></span>扩展方<span class="_ _2"></span>法</div><div class="t m0 x2 h5 y9 ff1 fs2 fc0 sc0 ls0 ws0">每个人都<span class="_ _2"></span>知道并使<span class="_ _2"></span>用<span class="ff3">MVC</span>中<span class="_ _2"></span>的局部视图<span class="_ _2"></span>,以及局<span class="_ _2"></span>部视图如<span class="_ _2"></span>何包含在<span class="_ _2"></span>主<span class="_ _2"></span><span class="ff3 fs3">View<span class="fs2"> </span></span>(通常是<span class="_ _2"></span>索引页)<span class="_ _2"></span>中。</div><div class="t m0 x2 h5 ya ff1 fs2 fc0 sc0 ls0 ws0">此扩展是<span class="_ _2"></span>一个新的<span class="_ _2"></span><span class="ff3 fs3">HtmlHelper<span class="_ _2"></span></span>工作很脏,<span class="_ _2"></span>即显示<span class="ff3">“</span>预<span class="_ _2"></span>览<span class="ff3">”</span>局部视<span class="_ _2"></span>图,在幕<span class="_ _2"></span>后调用真<span class="_ _2"></span>实视图,最<span class="_ _2"></span>后立即准<span class="_ _2"></span>备就绪时<span class="_ _2"></span>显示完整<span class="_ _2"></span>版本,可</div><div class="t m0 x2 h5 yb ff1 fs2 fc0 sc0 ls0 ws0">能只用一<span class="_ _2"></span>行代码调<span class="_ _2"></span>用它。</div><div class="t m0 x2 h4 yc ff1 fs1 fc0 sc0 ls0 ws0">使用代<span class="_ _2"></span>码<span class="_ _7"></span>使用代<span class="_ _2"></span>码</div><div class="t m0 x2 h5 yd ff3 fs2 fc0 sc0 ls0 ws0">C<span class="ff1">#</span></div><div class="t m0 x2 h6 ye ff3 fs3 fc0 sc0 ls0 ws0">@Html.Asy<span class="_ _2"></span>ncPartial( <span class="_ _2"></span>"<span class="_ _2"></span> <span class="_ _2"></span>MyController" , <span class="_ _2"></span>" <span class="_ _2"></span>MyAc<span class="_ _2"></span>tion" )</div><div class="t m0 x2 h5 yf ff1 fs2 fc0 sc0 ls0 ws0">这是代替<span class="_ _2"></span><span class="ff3 fs3">Html.Partial</span>的<span class="_ _2"></span>扩展的最简<span class="_ _2"></span>单用法,<span class="_ _2"></span>它将提供<span class="_ _2"></span>给:</div><div class="t m0 x1 h5 y10 ff1 fs2 fc0 sc0 ls0 ws0">直接在父<span class="_ _2"></span>视图中加<span class="_ _2"></span>载在这种<span class="_ _2"></span>情况下名为<span class="_ _2"></span><span class="ff3">“ <span class="_ _5"></span><span class="fs3">MyAction_Previe<span class="_ _2"></span>w<span class="fs2"> ”<span class="ff1">的部<span class="_ _2"></span>分视图,<span class="_ _2"></span>该部分通常<span class="_ _2"></span>是无模型<span class="_ _2"></span>的部分视<span class="_ _2"></span>图。<span class="_ _5"></span><span class="ff3"> <span class="_ _5"></span><span class="ff1">它的外观<span class="_ _2"></span>应与</span></span></span></span></span></span></div><div class="t m0 x1 h5 y11 ff1 fs2 fc0 sc0 ls0 ws0">最终视图<span class="_ _2"></span>相似,但<span class="_ _2"></span>仅显示一<span class="_ _2"></span>个正在等待<span class="_ _2"></span>的微调器<span class="_ _2"></span>或您喜欢<span class="_ _2"></span>的内容。</div><div class="t m0 x1 h5 y12 ff1 fs2 fc0 sc0 ls0 ws0">将预览部<span class="_ _2"></span>分<span class="ff3">HTML</span>包<span class="_ _2"></span>装到容器<span class="_ _2"></span>中,并作<span class="_ _2"></span>为内联代<span class="_ _2"></span>码或我们决<span class="_ _2"></span>定的地方<span class="_ _2"></span>注入将调<span class="_ _2"></span>用<span class="_ _2"></span><span class="ff3 fs3">MyController<span class="_ _2"></span>/Myaction<span class="fs2">JavaS<span class="_ _2"></span>cript</span></span>代码</div><div class="t m0 x1 h5 y13 ff1 fs2 fc0 sc0 ls0 ws0">用<span class="ff3">JavaS<span class="_ _2"></span>cript</span>获得的<span class="_ _2"></span>异步响应<span class="_ _2"></span>替换容器内<span class="_ _2"></span>容</div><div class="t m0 x2 h5 y14 ff1 fs2 fc0 sc0 ls0 ws0">结果是预<span class="_ _2"></span>览<span class="ff3">Partial</span>视<span class="_ _2"></span>图<span class="ff3">...</span></div><div class="t m0 x2 h5 y15 ff3 fs2 fc0 sc0 ls0 ws0">...<span class="ff1">一旦有<span class="_ _2"></span>数据,将由<span class="_ _2"></span>完整的</span>“<span class="ff1">部<span class="_ _2"></span>分视图</span>”<span class="ff1">替<span class="_ _2"></span>换。</span></div><div class="t m0 x2 h5 y16 ff1 fs2 fc0 sc0 ls0 ws0">完整的扩<span class="_ _2"></span>展签名如<span class="_ _2"></span>下:</div><div class="t m0 x2 h5 y17 ff3 fs2 fc0 sc0 ls0 ws0">C<span class="ff1">#</span></div><div class="t m0 x2 h6 y18 ff3 fs3 fc0 sc0 ls0 ws0"> p<span class="_ _2"></span>ublic <span class="_ _2"></span>static MvcHtmlStr<span class="_ _2"></span>ing AsyncParti<span class="_ _2"></span>al( this HtmlH<span class="_ _2"></span>elper helper,</div><div class="t m0 x2 h6 y19 ff3 fs3 fc0 sc0 ls0 ws0"> string<span class="_ _2"></span> controller,</div><div class="t m0 x2 h6 y1a ff3 fs3 fc0 sc0 ls0 ws0"> string<span class="_ _2"></span> action,</div><div class="t m0 x2 h6 y1b ff3 fs3 fc0 sc0 ls0 ws0"> string<span class="_ _2"></span> previewPar<span class="_ _2"></span>tialName= nul<span class="_ _2"></span>l ,</div><div class="t m0 x2 h6 y1c ff3 fs3 fc0 sc0 ls0 ws0"> AjaxMet<span class="_ _2"></span>hods method =<span class="_ _2"></span> AjaxMethods.G<span class="_ _2"></span>ET,</div><div class="t m0 x2 h6 y1d ff3 fs3 fc0 sc0 ls0 ws0"> TempDa<span class="_ _2"></span>taDictionary T<span class="_ _2"></span>empData= <span class="_ _2"></span>null )</div><div class="t m0 x2 h5 y1e ff3 fs3 fc0 sc0 ls0 ws0">previewPar<span class="_ _2"></span>tialName<span class="fs2"> <span class="ff1">:如果<span class="_ _2"></span>提供,它<span class="_ _2"></span>将是在等待<span class="_ _2"></span>异步调用<span class="_ _2"></span>完成时显<span class="_ _2"></span>示的</span>“ previ<span class="_ _2"></span>ew”<span class="ff1">局部视<span class="_ _2"></span>图的名称<span class="_ _2"></span>。<span class="_ _8"></span><span class="ff3"> <span class="ff1">默认为</span>“ <span class="_ _5"></span><span class="fs3">{action}_preview<span class="fs2"> ”</span></span></span></span></span></div></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div></body></html>