视图状态

ASP.NET页框架用于在往返过程之间保留页和控件值的方法

视图状态是 ASP.NET 页框架用于在往返过程之间保留页和控件值的方法。在呈现页的 HTML 标记时,必须在回发过程中保留的页和值的当前状态将被序列化为 Base64 编码字符串。然后,此信息将被放入到一个或多个视图状态隐藏字段中。

简介
ASP.NET 视图状态概述 .NET Framework 4
本主题包含以下各节:
方案
功能
背景
类参考
方案
视图状态由 ASP.NET 页框架自动用于保存在各个回发之间必须保留的信息。此信息包括控件的任何非默认值。
您还可以使用视图状态来存储特定于页的应用程序数据。
功能
视图状态是 ASP.NET 页中的存储库,可以存储必须在回发过程中保留的值。页框架使用视图状态在各个回发之间保存控件设置。
可以在您自己的应用程序中使用视图状态完成以下工作:
在各个回发之间保存值,而不将这些值存储在会话状态或用户配置文件中。
存储您定义的页或控件属性的值。
创建一个自定义视图状态提供程序,以便将视图状态信息存储在 SQL Server 数据库或其他数据存储区中。
例如,您可以将信息存储在视图状态中,这样在下次将该页发送到服务器时,代码便可以在页加载事件过程中访问这些信息。
背景介绍
Web 应用程序是无状态的。每次从服务器请求页时,都会创建网页类的一个新实例。这通常意味着在每次往返过程中会丢失该页及其控件中的所有信息。例如,默认状态下,如果用户将信息输入到 HTML 网页上的文本框中,该信息会发送到服务器。但是,该信息不会在响应中返回到浏览器。
为了克服 Web 编程的这一固有的局限性,ASP.NET 页框架包含几种状态管理功能,可以在往返过程之间将页和控件值保存到 Web 服务器。其中一种功能便是视图状态。
默认情况下,ASP.NET 页框架使用视图状态在往返过程之间保存页和控件值。在呈现页的 HTML 时,必须在回发过程中保留的页和值的当前状态将被序列化为 Base64 编码字符串。然后,它们将被放入页中的一个或多个隐藏字段。
您可以在代码中使用页的 ViewState属性访问视图状态。ViewState属性是一个包含键/值对(其中包含视图状态数据)的字典。
通过实现自定义的 PageStatePersister类以存储页数据,您可以更改默认行为并将视图状态存储到另一个位置(如 SQL Server 数据库)。有关将页状态存储在流中而不是隐藏字段中的示例,请参见 PageStatePersister类的示例。
注意事项
视图状态提供了特定 ASP.NET 页的状态信息。如果需要在多个页上使用信息,或者需要在对网站的多次访问之间保存信息,必须使用其他方法来维护状态。
视图状态信息被序列化为 XML,然后使用 base-64 编码机制进行编码,这可能会生成大量数据。将页发送到服务器时,视图状态的内容会作为页回发信息的一部分进行发送。如果视图状态包含大量信息,则会影响页的性能。请使用应用程序的典型数据测试页性能,以确定视图状态的大小是否会导致性能问题。
另一个注意事项是,如果隐藏字段中的数据量过大,则某些代理和防火墙将禁止访问包含这些数据的页。由于最大允许数量可能随所实现的防火墙和代理的不同而不同,因此大的隐藏字段可能会导致间歇性问题。如果存储在 ViewState属性中的数据量超出了在页的 MaxPageStateFieldLength属性中指定的值,则页会将视图状态拆分为多个隐藏字段。这可减小单个隐藏字段的大小,使其大小不会超过防火墙所允许的上限。
在默认情况下,将启用视图状态,但页上的某些控件可能不需要视图状态。例如,如果某个控件在每次回发时都会从数据存储区进行刷新,则可以关闭该控件的视图状态以减少视图状态的大小。
您可以对控件进行配置,以便默认情况下禁用页或容器控件中所有控件的视图状态,然后可以为特定控件启用视图状态。您还可以对控件进行配置,以便禁用视图状态并且无法为子控件启用视图状态。
若要在默认情况下禁用控件的视图状态,以便可以为子控件启用视图状态,请将控件的 ViewStateMode属性设置为 Disabled。若要在默认情况下禁用整页的视图状态,请将 @ Page指令的 ViewStateMode特性设置为 Disabled。
若要禁用控件及其子控件的视图状态,以便无法为子控件启用视图状态,请将控件的 EnableViewState属性设置为 false。若要禁用整页及其所有子控件的视图状态,请将 @ Page指令的 EnableViewState特性设置为 false。
某些移动设备根本不允许使用隐藏字段。
控件状态
除视图状态以外,ASP.NET 还支持控件状态。页使用控件状态来保留必须在回发之间保留的控件信息,即使已为页或某个控件禁用视图状态也是如此。控件状态与视图状态类似,也存储在一个或多个隐藏字段中。
状态保存
您可以使用页的 ViewState属性(该属性公开一个字典对象)来访问视图状态信息。可以使用此字典存储自定义值。一个典型用法是存储您在页中定义的自定义属性的值。
由于视图状态是作为隐藏字段发送的,因此直到该页的 PreRenderComplete事件发生之前,都可以对视图状态进行更改。在将页呈现到浏览器之后,便无法保存对视图状态所做的更改。
如果用户查看网页的源并可以对 base-64 编码字符串进行解码,则可以看到隐藏视图状态字段中的信息。这可能会产生安全问题。
若要将值保存到视图状态,请创建一个包含要保存的值的新项,并将该项添加到视图状态字典中。下面的示例演示一个 ASP.NET 网页,该网页包含用于将一个字符串和一个整数值保存在视图状态中的代码。
C#
VB
可以存储在视图状态中的数据类型 您可以将下列类型的对象存储到视图状态中:
字符串
整数
Boolean值
Array对象
ArrayList对象
自定义类型转换器(有关更多信息,请参见 TypeConverter类)
您还可以存储其他类型的数据,但是必须使用 Serializable特性编译类,以便可以为视图状态序列化该类的值。
状态取值
若要从视图状态读取值,请获取页的 ViewState属性,然后从视图状态字典中读取该值。
下面的示例演示如何从视图状态中获取一个名为 arrayListInViewState的 ArrayList对象,然后将一个 GridView控件作为数据源绑定到该对象。
视图状态中的值被类型化为 String。在 Visual Basic 中,如果设置了 Option Strict On,则必须在使用视图状态值之前将这些值强制转换为适当的类型,如上面的示例中所示。在 C# 中,当您读取视图状态值时,必须始终将其强制转换为适当的类型。
如果尝试从不存在的视图状态中获取值,则不会引发任何异常。若要确保值在视图状态中,请首先检查对象是否存在。下面的示例演示如何检查视图状态项。
如果您尝试通过其他某种方式使用不存在的视图状态项(如检查其类型),则会引发 NullReferenceException异常。
安全保证
默认情况下,视图状态数据存储在页上的隐藏字段中,并使用 Base64 编码机制进行编码。此外,还会使用计算机身份验证代码 (MAC) 密钥从视图状态数据中创建这些数据的哈希。哈希值会添加到编码的视图状态数据中,并且生成的字符串会存储在页中。当页被回发到服务器时,ASP.NET 页框架会重新计算哈希值,并将其与视图状态中存储的值进行比较。如果哈希值不匹配,将引发异常,指示视图状态数据可能无效。
通过创建哈希值,ASP.NET 页框架可以测试视图状态数据是否已被损坏或篡改。但是,即使视图状态数据未被篡改,这些数据仍然可能被恶意用户截获和读取。
使用 MAC 计算视图状态哈希值 用于计算视图状态哈希值的 MAC 密钥既可以自动生成,也可以在 Machine.config 文件中指定。如果该密钥是自动生成的,则基于计算机的 MAC 地址(它是该计算机中网络适配器的唯一 GUID 值)进行创建。
恶意用户很难根据视图状态中的哈希值进行反向工程处理以推断出 MAC 密钥。因此,MAC 编码是一种用来确定视图状态数据是否已更改的相当可靠的方式。
通常,用于生成哈希的 MAC 密钥越大,不同字符串的哈希值相同的可能性就越小。如果密钥是自动生成的,则 ASP.NET 使用 SHA-1 编码来创建一个大型密钥。不过,在网络场环境中,所有服务器的密钥必须相同。如果密钥不同,那么当页回发至创建该页的服务器之外的其他服务器时,ASP.NET 页框架将引发异常。因此,在网络场环境中,应在 Machine.config 文件中指定密钥,而不是让 ASP.NET 自动生成密钥。在这种情况下,请确保您创建的密钥足够长,以便使哈希值具有充分的安全性。但是,密钥越长,创建哈希所需要的时间也就越多。因此,必须在安全需求与性能需求之间进行权衡。
加密视图状态 虽然 MAC 编码有助于防止篡改视图状态数据,但它无法阻止用户查看数据。可以通过下面两种方式来防止他人查看此数据:通过 SSL 传输页,以及对视图状态数据进行加密。要求通过 SSL 发送页有助于防止那些原本不应该收到该页的人探查数据包和未经授权访问数据。
但是,请求该页的用户仍然能够查看视图状态数据,因为 SSL 会解密该页以便在浏览器中显示它。如果您不担心授权用户可以访问视图状态数据,则这种方法很好。但在某些情况下,控件可能会使用视图状态存储任何用户都不应访问的信息。例如,页可能包含一个数据绑定控件,该控件存储视图状态的项标识符(数据密钥)。如果这些标识符中包含敏感数据(如客户 ID),则应对视图状态数据进行加密来替代通过 SSL 发送页,或是将其作为通过 SSL 发送页的补充方法。
若要加密数据,请将页的 ViewStateEncryptionMode属性设置为 true。在视图状态中存储信息时,可以使用常规的读写技术;页会为您处理所有加密和解密工作。对视图状态数据进行加密可能会影响应用程序的性能。因此,如不需要,请不要使用加密。
控件状态加密 使用控件状态的控件可以通过调用 RegisterRequiresViewStateEncryption方法来要求对视图状态进行加密。如果页中的任何控件都要求对视图状态进行加密,则该页中的所有视图状态都会进行加密。
基于每个用户的视图状态编码 如果网站需要对用户进行身份验证,则可以设置 Page_Init事件处理程序中的 ViewStateUserKey属性,以便将页的视图状态与特定用户相关联。这将有助于防止一键式 (one-click) 攻击,在这种方式的攻击中,恶意用户创建一个有效的预先填充的网页,该网页具有来自以前创建的网页的视图状态。攻击者随后引诱受害者单击一个链接,该链接使用受害者的标识向服务器发送页。
如果设置了 ViewStateUserKey属性,将使用攻击者的标识来创建原始页的视图状态的哈希。受害者被引诱重新发送此页时,由于用户密钥不同,因此哈希值也将不同。这样,页的验证将失败,并且引发一个异常。
必须将 ViewStateUserKey属性与每个用户的一个唯一值(如用户名或标识符)相关联。
在共享承载环境中保护配置的安全性 在共享的承载环境中,恶意用户可能会修改状态管理属性,从而可能影响到计算机上的其他应用程序。修改方式包括:直接修改 Machine.config;使用配置类进行修改;以及使用其他管理和配置工具进行修改。您可以通过对配置文件的节进行加密来帮助防止他人修改您的应用程序配置。
类参考
全国各地天气预报查询

上海市

  • 市辖区
  • 云南省

  • 临沧市
  • 云南省

  • 丽江市
  • 云南省

  • 保山市
  • 云南省

  • 大理白族自治州
  • 云南省

  • 德宏傣族景颇族自治州
  • 云南省

  • 怒江傈僳族自治州
  • 云南省

  • 文山壮族苗族自治州
  • 云南省

  • 昆明市
  • 云南省

  • 昭通市
  • 云南省

  • 普洱市
  • 云南省

  • 曲靖市
  • 云南省

  • 楚雄彝族自治州
  • 云南省

  • 玉溪市
  • 云南省

  • 红河哈尼族彝族自治州
  • 云南省

  • 西双版纳傣族自治州
  • 云南省

  • 迪庆藏族自治州
  • 内蒙古自治区

  • 乌兰察布市
  • 内蒙古自治区

  • 乌海市
  • 内蒙古自治区

  • 兴安盟
  • 内蒙古自治区

  • 包头市
  • 内蒙古自治区

  • 呼伦贝尔市
  • 内蒙古自治区

  • 呼和浩特市
  • 内蒙古自治区

  • 巴彦淖尔市
  • 内蒙古自治区

  • 赤峰市
  • 内蒙古自治区

  • 通辽市
  • 内蒙古自治区

  • 鄂尔多斯市
  • 内蒙古自治区

  • 锡林郭勒盟
  • 内蒙古自治区

  • 阿拉善盟
  • 北京市

  • 市辖区
  • 吉林省

  • 吉林市
  • 吉林省

  • 四平市
  • 吉林省

  • 延边朝鲜族自治州
  • 吉林省

  • 松原市
  • 吉林省

  • 白城市
  • 吉林省

  • 白山市
  • 吉林省

  • 辽源市
  • 吉林省

  • 通化市
  • 吉林省

  • 长春市
  • 四川省

  • 乐山市
  • 四川省

  • 内江市
  • 四川省

  • 凉山彝族自治州
  • 四川省

  • 南充市
  • 四川省

  • 宜宾市
  • 四川省

  • 巴中市
  • 四川省

  • 广元市
  • 四川省

  • 广安市
  • 四川省

  • 德阳市
  • 四川省

  • 成都市
  • 四川省

  • 攀枝花市
  • 四川省

  • 泸州市
  • 四川省

  • 甘孜藏族自治州
  • 四川省

  • 眉山市
  • 四川省

  • 绵阳市
  • 四川省

  • 自贡市
  • 四川省

  • 资阳市
  • 四川省

  • 达州市
  • 四川省

  • 遂宁市
  • 四川省

  • 阿坝藏族羌族自治州
  • 四川省

  • 雅安市
  • 天津市

  • 市辖区
  • 宁夏回族自治区

  • 中卫市
  • 宁夏回族自治区

  • 吴忠市
  • 宁夏回族自治区

  • 固原市
  • 宁夏回族自治区

  • 石嘴山市
  • 宁夏回族自治区

  • 银川市
  • 安徽省

  • 亳州市
  • 安徽省

  • 六安市
  • 安徽省

  • 合肥市
  • 安徽省

  • 安庆市
  • 安徽省

  • 宣城市
  • 安徽省

  • 宿州市
  • 安徽省

  • 池州市
  • 安徽省

  • 淮北市
  • 安徽省

  • 淮南市
  • 安徽省

  • 滁州市
  • 安徽省

  • 芜湖市
  • 安徽省

  • 蚌埠市
  • 安徽省

  • 铜陵市
  • 安徽省

  • 阜阳市
  • 安徽省

  • 马鞍山市
  • 安徽省

  • 黄山市
  • 山东省

  • 东营市
  • 山东省

  • 临沂市
  • 山东省

  • 威海市
  • 山东省

  • 德州市
  • 山东省

  • 日照市
  • 山东省

  • 枣庄市
  • 山东省

  • 泰安市
  • 山东省

  • 济南市
  • 山东省

  • 济宁市
  • 山东省

  • 淄博市
  • 山东省

  • 滨州市
  • 山东省

  • 潍坊市
  • 山东省

  • 烟台市
  • 山东省

  • 聊城市
  • 山东省

  • 菏泽市
  • 山东省

  • 青岛市
  • 山西省

  • 临汾市
  • 山西省

  • 吕梁市
  • 山西省

  • 大同市
  • 山西省

  • 太原市
  • 山西省

  • 忻州市
  • 山西省

  • 晋中市
  • 山西省

  • 晋城市
  • 山西省

  • 朔州市
  • 山西省

  • 运城市
  • 山西省

  • 长治市
  • 山西省

  • 阳泉市
  • 广东省

  • 东莞市
  • 广东省

  • 中山市
  • 广东省

  • 云浮市
  • 广东省

  • 佛山市
  • 广东省

  • 广州市
  • 广东省

  • 惠州市
  • 广东省

  • 揭阳市
  • 广东省

  • 梅州市
  • 广东省

  • 汕头市
  • 广东省

  • 汕尾市
  • 广东省

  • 江门市
  • 广东省

  • 河源市
  • 广东省

  • 深圳市
  • 广东省

  • 清远市
  • 广东省

  • 湛江市
  • 广东省

  • 潮州市
  • 广东省

  • 珠海市
  • 广东省

  • 肇庆市
  • 广东省

  • 茂名市
  • 广东省

  • 阳江市
  • 广东省

  • 韶关市
  • 广西壮族自治区

  • 北海市
  • 广西壮族自治区

  • 南宁市
  • 广西壮族自治区

  • 崇左市
  • 广西壮族自治区

  • 来宾市
  • 广西壮族自治区

  • 柳州市
  • 广西壮族自治区

  • 桂林市
  • 广西壮族自治区

  • 梧州市
  • 广西壮族自治区

  • 河池市
  • 广西壮族自治区

  • 玉林市
  • 广西壮族自治区

  • 百色市
  • 广西壮族自治区

  • 贵港市
  • 广西壮族自治区

  • 贺州市
  • 广西壮族自治区

  • 钦州市
  • 广西壮族自治区

  • 防城港市
  • 新疆维吾尔自治区

  • 乌鲁木齐市
  • 新疆维吾尔自治区

  • 伊犁哈萨克自治州
  • 新疆维吾尔自治区

  • 克孜勒苏柯尔克孜自治州
  • 新疆维吾尔自治区

  • 克拉玛依市
  • 新疆维吾尔自治区

  • 博尔塔拉蒙古自治州
  • 新疆维吾尔自治区

  • 吐鲁番市
  • 新疆维吾尔自治区

  • 和田地区
  • 新疆维吾尔自治区

  • 哈密市
  • 新疆维吾尔自治区

  • 喀什地区
  • 新疆维吾尔自治区

  • 塔城地区
  • 新疆维吾尔自治区

  • 巴音郭楞蒙古自治州
  • 新疆维吾尔自治区

  • 昌吉回族自治州
  • 新疆维吾尔自治区

  • 自治区直辖县级行政区划
  • 新疆维吾尔自治区

  • 阿克苏地区
  • 新疆维吾尔自治区

  • 阿勒泰地区
  • 江苏省

  • 南京市
  • 江苏省

  • 南通市
  • 江苏省

  • 宿迁市
  • 江苏省

  • 常州市
  • 江苏省

  • 徐州市
  • 江苏省

  • 扬州市
  • 江苏省

  • 无锡市
  • 江苏省

  • 泰州市
  • 江苏省

  • 淮安市
  • 江苏省

  • 盐城市
  • 江苏省

  • 苏州市
  • 江苏省

  • 连云港市
  • 江苏省

  • 镇江市
  • 江西省

  • 上饶市
  • 江西省

  • 九江市
  • 江西省

  • 南昌市
  • 江西省

  • 吉安市
  • 江西省

  • 宜春市
  • 江西省

  • 抚州市
  • 江西省

  • 新余市
  • 江西省

  • 景德镇市
  • 江西省

  • 萍乡市
  • 江西省

  • 赣州市
  • 江西省

  • 鹰潭市
  • 河北省

  • 保定市
  • 河北省

  • 唐山市
  • 河北省

  • 廊坊市
  • 河北省

  • 张家口市
  • 河北省

  • 承德市
  • 河北省

  • 沧州市
  • 河北省

  • 石家庄市
  • 河北省

  • 秦皇岛市
  • 河北省

  • 衡水市
  • 河北省

  • 邢台市
  • 河北省

  • 邯郸市
  • 河南省

  • 三门峡市
  • 河南省

  • 信阳市
  • 河南省

  • 南阳市
  • 河南省

  • 周口市
  • 河南省

  • 商丘市
  • 河南省

  • 安阳市
  • 河南省

  • 平顶山市
  • 河南省

  • 开封市
  • 河南省

  • 新乡市
  • 河南省

  • 洛阳市
  • 河南省

  • 漯河市
  • 河南省

  • 濮阳市
  • 河南省

  • 焦作市
  • 河南省

  • 省直辖县级行政区划
  • 河南省

  • 许昌市
  • 河南省

  • 郑州市
  • 河南省

  • 驻马店市
  • 河南省

  • 鹤壁市
  • 浙江省

  • 丽水市
  • 浙江省

  • 台州市
  • 浙江省

  • 嘉兴市
  • 浙江省

  • 宁波市
  • 浙江省

  • 杭州市
  • 浙江省

  • 温州市
  • 浙江省

  • 湖州市
  • 浙江省

  • 绍兴市
  • 浙江省

  • 舟山市
  • 浙江省

  • 衢州市
  • 浙江省

  • 金华市
  • 海南省

  • 三亚市
  • 海南省

  • 三沙市
  • 海南省

  • 儋州市
  • 海南省

  • 海口市
  • 海南省

  • 省直辖县级行政区划
  • 湖北省

  • 十堰市
  • 湖北省

  • 咸宁市
  • 湖北省

  • 孝感市
  • 湖北省

  • 宜昌市
  • 湖北省

  • 恩施土家族苗族自治州
  • 湖北省

  • 武汉市
  • 湖北省

  • 省直辖县级行政区划
  • 湖北省

  • 荆州市
  • 湖北省

  • 荆门市
  • 湖北省

  • 襄阳市
  • 湖北省

  • 鄂州市
  • 湖北省

  • 随州市
  • 湖北省

  • 黄冈市
  • 湖北省

  • 黄石市
  • 湖南省

  • 娄底市
  • 湖南省

  • 岳阳市
  • 湖南省

  • 常德市
  • 湖南省

  • 张家界市
  • 湖南省

  • 怀化市
  • 湖南省

  • 株洲市
  • 湖南省

  • 永州市
  • 湖南省

  • 湘潭市
  • 湖南省

  • 湘西土家族苗族自治州
  • 湖南省

  • 益阳市
  • 湖南省

  • 衡阳市
  • 湖南省

  • 邵阳市
  • 湖南省

  • 郴州市
  • 湖南省

  • 长沙市
  • 甘肃省

  • 临夏回族自治州
  • 甘肃省

  • 兰州市
  • 甘肃省

  • 嘉峪关市
  • 甘肃省

  • 天水市
  • 甘肃省

  • 定西市
  • 甘肃省

  • 平凉市
  • 甘肃省

  • 庆阳市
  • 甘肃省

  • 张掖市
  • 甘肃省

  • 武威市
  • 甘肃省

  • 甘南藏族自治州
  • 甘肃省

  • 白银市
  • 甘肃省

  • 酒泉市
  • 甘肃省

  • 金昌市
  • 甘肃省

  • 陇南市
  • 福建省

  • 三明市
  • 福建省

  • 南平市
  • 福建省

  • 厦门市
  • 福建省

  • 宁德市
  • 福建省

  • 泉州市
  • 福建省

  • 漳州市
  • 福建省

  • 福州市
  • 福建省

  • 莆田市
  • 福建省

  • 龙岩市
  • 西藏自治区

  • 山南市
  • 西藏自治区

  • 拉萨市
  • 西藏自治区

  • 日喀则市
  • 西藏自治区

  • 昌都市
  • 西藏自治区

  • 林芝市
  • 西藏自治区

  • 那曲市
  • 西藏自治区

  • 阿里地区
  • 贵州省

  • 六盘水市
  • 贵州省

  • 安顺市
  • 贵州省

  • 毕节市
  • 贵州省

  • 贵阳市
  • 贵州省

  • 遵义市
  • 贵州省

  • 铜仁市
  • 贵州省

  • 黔东南苗族侗族自治州
  • 贵州省

  • 黔南布依族苗族自治州
  • 贵州省

  • 黔西南布依族苗族自治州
  • 辽宁省

  • 丹东市
  • 辽宁省

  • 大连市
  • 辽宁省

  • 抚顺市
  • 辽宁省

  • 朝阳市
  • 辽宁省

  • 本溪市
  • 辽宁省

  • 沈阳市
  • 辽宁省

  • 盘锦市
  • 辽宁省

  • 营口市
  • 辽宁省

  • 葫芦岛市
  • 辽宁省

  • 辽阳市
  • 辽宁省

  • 铁岭市
  • 辽宁省

  • 锦州市
  • 辽宁省

  • 阜新市
  • 辽宁省

  • 鞍山市
  • 重庆市

  • 重庆市

  • 市辖区
  • 陕西省

  • 咸阳市
  • 陕西省

  • 商洛市
  • 陕西省

  • 安康市
  • 陕西省

  • 宝鸡市
  • 陕西省

  • 延安市
  • 陕西省

  • 榆林市
  • 陕西省

  • 汉中市
  • 陕西省

  • 渭南市
  • 陕西省

  • 西安市
  • 陕西省

  • 铜川市
  • 青海省

  • 果洛藏族自治州
  • 青海省

  • 海东市
  • 青海省

  • 海北藏族自治州
  • 青海省

  • 海南藏族自治州
  • 青海省

  • 海西蒙古族藏族自治州
  • 青海省

  • 玉树藏族自治州
  • 青海省

  • 西宁市
  • 青海省

  • 黄南藏族自治州
  • 黑龙江省

  • 七台河市
  • 黑龙江省

  • 伊春市
  • 黑龙江省

  • 佳木斯市
  • 黑龙江省

  • 双鸭山市
  • 黑龙江省

  • 哈尔滨市
  • 黑龙江省

  • 大兴安岭地区
  • 黑龙江省

  • 大庆市
  • 黑龙江省

  • 牡丹江市
  • 黑龙江省

  • 绥化市
  • 黑龙江省

  • 鸡西市
  • 黑龙江省

  • 鹤岗市
  • 黑龙江省

  • 黑河市
  • 黑龙江省

  • 齐齐哈尔市