博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在asp.net mvc中使用PartialView返回部分HTML段
阅读量:6571 次
发布时间:2019-06-24

本文共 2316 字,大约阅读时间需要 7 分钟。

问题链接:

 

该问题是个常见的 case, 故写篇文章用于提示新人。

 

在asp.net mvc中返回View时使用的是,它继承自 同一时候它还有个兄弟

 

相信聪明的你已经知道了它俩的差别了,没错 一个用于返回总体,还有一个返回局部(部分)。

 

如果我有这样一个需求,输入username,然后返回相关信息。之前的做法可能会是用json格式来返回用户的相关信息,然后到页面去渲染相关

 

的HTML,假设产生的相关HTML比較大的话,我还是建议你沿用之前的方案(返回json),由于传输的数据少,响应快一些。

 

反之, 则是返回部分HTML 的不错选择。

 

以下就让我们看下怎样使用:

 

Layout.cshtml

 

<!DOCTYPE html>

<html>

<head>

    <title>@ViewBag.Title</title>

    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>

</head>

<body>

    @RenderBody()

</body>

</html>

 

Index.cshtml

 

@{

    ViewBag.Title = "Index";

    Layout = "~/Views/Shared/_Layout.cshtml";

}

<h2>

    PartialView Demo</h2>

<div>

    Please write your name here

    <input type='text' id='txtName' />

    <input type='button' value='submit' id='btnOK' />

</div>

<br />

<div id='content'>

</div>

<script type="text/javascript">

    $(function () {

        $('#btnOK').click(function () {

            var data = { Name: $('#txtName').val()};                

            $.ajax({

                type: "POST",

                url: '@Url.Action("PartialViewDemo", "Home")',

                data: data,

                datatype: "html",

                success: function (data) {

                        $('#content').html(data);                   

                },

                error: function () {

                    alert("处理失败!");

                }

            });

        });      

    });

</script>

 

ViewUserControl.cshtml (Partial View)

 

@model Sample.Models.PartialViewDemoViewModel 

<div> 

 

 

<h2>ViewUserControl.cshtml</h2> 

 

@Model.dt

<br /><br />

Hello~  @Model.Name 

</div>

 

or ViewUC.ascx   (View User Control)

 

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Vancl.Sample.Models.PartialViewDemoViewModel>" %>

 

<div>

 

<h2>ViewUC.ascx</h2> 

 

<%=Model.dt %>

 

<br /><br />

 

Hello~  <%=Model.Name %>

 

</div>

 

Model

 

public class PartialViewDemoViewModel

    {

        public string Name { set; get; }

        public DateTime? dt { set; get; }

    }

 

Action

 

[HttpPost]

        public ActionResult PartialViewDemo(PartialViewDemoViewModel model)

        {

            model.dt = DateTime.Now;

            return PartialView("ViewUserControl", model); 

            //return PartialView("ViewUC", model); 

        } 

 

调用 Controller.PartialView方法时,能够指定 Partial View or View User Control 效果是一样的

 

不写后缀时,会查找同文件夹和Shared文件夹下的文件,也就是在同文件夹或Shared文件夹下时能够省略后缀名。

 

假设文件夹下存在同名的情况,会找第一个并返回。

 

eg: 同文件夹下有 ViewUserControl.ascx ViewUserControl.cshtml

 

这时使用 return PartialView("ViewUserControl");

 

会返回 ViewUserControl.ascx 的内容,由于字母ac :)

 

假设在这样的情况下想调用 ViewUserControl.cshtml

 

则须要写全路径,return PartialView("~/Views/Home/ViewUserControl.cshtml");

 

当想訪问的 Partial View or View User Control 在不同文件夹时,也能够通过全路径的方式訪问。

 

Hope this helps,

Sandy

 

转载地址:http://iwljo.baihongyu.com/

你可能感兴趣的文章
解决:laravel出现Please provide a valid cache path.
查看>>
[JAVA] String常用方法
查看>>
oracle
查看>>
兼容IE浏览器样式的html上传文件控件
查看>>
直接插入排序
查看>>
fstab中mount错误导致不能启动
查看>>
OSPF转发地址深入解析
查看>>
SQLServer的Top功能
查看>>
CentOS之crontab
查看>>
【在线研讨-现场文字】《敏捷开发用户故事分类与组织结构(二期-3)》2012-07-03...
查看>>
Hyper-V 2012 R2 配置存储QoS
查看>>
易语言 --什么情况下 用许可证
查看>>
项目总结:凡事预则立,不预则废!
查看>>
ORA-32004: obsolete and/or deprecated parameter(s)
查看>>
建属于自己的网站
查看>>
[linux] ubuntu 切换默认的/bin/sh
查看>>
Web Bench (网站压力测试工具)
查看>>
boost库之智能指针
查看>>
linux c/c++ GDB教程详解(转载)
查看>>
centos7下安装Python的pip
查看>>