今天在开发web时因为调用到的分部视图需要有个隐藏域。然后因为当我们第一次调用分部视图时,是用 @Html.Partial(“DetailDataPart”)在主视图里把它嵌进去主视图里的,这时它是不需要经过后台的,它会直接给你刷出分部视图来,我这里是DetailDataPart,所以它就直接把DetailDataPart视图显示出来,而不用经过controller里面的 ActionResult DetailDataPart()的,所以如果要给它初始化传参的话,在ActionResult DetailDataPart()里面写后传过去它是不会获取到的,我们需要在主视图里得到相应的值,然后传递给分部视图。

而我这个分部视图在后面一些操作时需要刷新它,所以它又会到后台去调用ActionResult DetailDataPart(),这时我们才需要在ActionResult DetailDataPart()里给赋获取相同的在主视图里要传给它的值。

接着问题就来了。。

一开始因为我需要给分部视图传两个参数,然后我又懒得再去建立什么实体类,于是就用了匿名类的写法,主视图的代码如下:

@Html.Partial("DetailDataPart", new { selectItem = ViewData["selectItem"], orgId = ViewData["orgId"] })

然后分部视图我获取参数的代码如下:

 @if (Model != null)
{
selectItem Item = (selectItem)Model.selectItem;
var orgId = Model.orgId;
}

这样写显示是没问题的,问题出现在后台,我再次刷新时需要给它从后台传同样的两个参数,于是我的代码就如下:

 return PartialView(new { selectItem = ItemInfo, orgId = orgId });

然后问题就来了,它第一次初始化显示没问题,能够显示出来;而当我后台获取值,重新刷新时,程序就会报错,提示说“object不包含selectItem的定义…”

最后通过跟同事讨论才知道,原来从后台那样传时,它会给我们把匿名类给定义成object类型,所以到前台才会一直报错。。

PartialView(object t)这是这个方法的定义。

所以我那样写的方法是不可行的,不能用匿名类传。

然后坑比的是今晚上网查资料时才了解到,主视图的ViewData数据跟分部视图是可以共享的!也就是说我在主视图的controller里定义了ViewData[“key”],那么在分部视图里我是可以直接使用ViewData[“key”]的

关于.net MVC中主视图和分部视图的数据共享遇到的问题的更多相关文章

  1. 关于mvc中传入DataTable到视图的应用

    MVC 中 如果是多表连接查询出的数据需要重新定义一个ViewModel,觉得很是麻烦,所以可以通过传一个DataTable到视图中可以避免这个问题 但是不知道会有什么不好的地方,有这方面经验的大神有 ...

  2. ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式

    方式一: 数据存储模型Model:此方式未用到数据存储模型Model,仅简单的字符串string型数据传递 前台接收显示数据视图View: <div style="height:300 ...

  3. MVC中从控制器到视图的数据传递方法汇总

    1.ViewData对象概述ViewData是一种字典集合数据,是"视图基类"和"控制器基类"的属性常见用法是在控制器中写入数据,在视图中读取数据ViewDat ...

  4. 在ASP.NET MVC中加载部分视图的方法及差别

    在视图里有多种方法可以加载部分视图,包括Partial() .Action().RenderPartial().RenderAction().RenderPage()方法.下面说明一下这些方法的差别. ...

  5. [转载]ASP.NET MVC 3的分部视图

    1.什么是分部视图,我们应该什么时候应该用? 作为一个对ASP.NET MVC 模型很熟悉的开发者,他们自然想创建一个内容和代码都可以重用的组件,在web 窗体,我们可以创建一个web用户控件或web ...

  6. asp.net mvc视图中嵌套分部视图

    asp.net mvc中Layout相当于webForm中母版页,分部视图相当于webForm中的用户控件. 下面例子是一个视图如何嵌套分部视图: A是分部视图,B是一般视图(A,B中的代码省略) 我 ...

  7. MVC中的分部视图

    背景: 项目的工期马上就要到了,由于后台封装的很好,我们只需要用心熟悉框架,接下来后台的工作就是简单的代码工作了.原本以为最困难的时期已经过去,可没想到前台才是最困难的. B/S的基础十分薄弱,加上B ...

  8. MVC5中,加载分部视图,常见的方式

    首先,新建一个MVC类型的Web项目: 然后在Model文件夹下定义一个Student实体: public class Student { public int ID { get; set; } pu ...

  9. ASP.NET Core 入门教程 7、ASP.NET Core MVC 分部视图入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)分部视图简介 ASP.NET Core MVC (Razor)分部视图基础教程 ASP.NET Core MVC (Raz ...

随机推荐

  1. 前端Js复习-前后台的搭建-结合Bootstrap和JQuery搭建vue项目

    流式布局思想 """ 页面的尺寸改变动态改变页面布局,或是通过父集标签控制多个子标签,这种布局思想就称之为 - 流式布局思想 1) 将标签宽高设置成 百分比,就可以随屏幕 ...

  2. WPS隐藏文档修订显示的方法

  3. 我的 xelatex 模板

    \documentclass[twoside,11pt]{article} \usepackage{amsmath,amsfonts} \usepackage{hyperref} \usepackag ...

  4. 网络类(IP、dns、网络连接类)

    一.centOS 7 设置DNS方法 使用全新的命令行工具 nmcli 来设置 1.显示当前网络连接 nmcli connection show   NAME UUID TYPE DEVICE eno ...

  5. Spring Cloud服务的注册与发现(Eureka)

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

  6. PAT甲级——1006 Sign In and Sign Out

    PATA1006 Sign In and Sign Out At the beginning of every day, the first person who signs in the compu ...

  7. 【转】HeadFirst 组合模式+迭代器错误原因以及解决代码

    http://blog.csdn.net/sugar_girl/article/details/53400267     <HeadFirst JAVA设计模式>中用迭代器迭代组合模式是存 ...

  8. Grails Controller - redirect 方法

    官方文档: http://docs.grails.org/latest/ref/Controllers/redirect.html 网页跳转方法1: // 在一个Action中直接跳转到另外一个Act ...

  9. mysql数据库-索引-长期维护

    ###############    索引介绍    ############## """ 1. 索引介绍 需求: 一般的应用系统,读写比例在10:1左右,而且插入操作和 ...

  10. VSTO自动安装、卸载工具

    使用本工具,不需要制作VSTO外接程序安装包,就可以把你的作品自动安装到其他电脑. 用法:下载VSTO_Setup.rar,解压缩,然后把你开发好的Debug文件夹和VSTO_Setup.exe一起发 ...