Windows 7 MSDN泄露的密钥(电话激活)

Windows 7 Home Basic Retail

P4DBR-8YPT6-KHRB8-6T7RW-GMXGV
FGTCF-8JBG2-4BK4G-36JWB-PFQXB
CW4KD-MK47X-JYQ7Y-DKKTR-86TH7
37X8Q-CJ46F-RB8XP-GJ6RK-RHYT7
GDK6B-87QP9-F9WYK-PP327-BQ622
72C8D-KQ9Y4-FGBCD-WY9WG-BD92C
GV7X4-92M4D-6F69V-RFGP9-3FBBD
4JCWB-FVHJJ-XCPKC-CTWDP-QQQ9M
WXM3Y-H2GDY-TKFQH-6GQQF-7VG8P
V6V3G-9DB2T-BD4VC-44JVQ-6BVR2

Windows 7 Home Premium Retail

MVW82-3R7QW-Y4QDM-99M3V-C4QW3
PPBK3-M92CH-MRR9X-34Y9P-7CH2F
Q8JXJ-8HDJR-X4PXM-PW99R-KTJ3H
8489X-THF3D-BDJQR-D27PH-PJ3HC
TWF78-W7H8T-KXD8C-YDFCQ-HK4WG
BFTWY-X2PJR-VJP8V-KGBPJ-FWBMP
RHVHB-VYF67-9FT4M-2WXR8-P3C6R
38CGD-Q6RHB-37BVW-Y3XK7-3CJVC
86GG2-DBVT6-KYQQ6-XFK9R-896MF
4CBPF-W7GXG-J4J8F-GHG79-Q9YT8

Windows 7 Professional Retail

HWRFF-2FFYX-XFXP2-DYFC3-BX3B7
YT9K9-4R938-3TVXX-3Q3QT-9HBXM
C3X7Y-R6WWH-BRXRD-FY84C-FXWHK
XJBR4-M42Q4-QPJ9C-BRDRJ-KHPVY
TF3Q7-YYP8R-D78R7-W9Q9M-DXVBK
J8D39-J2WM3-6368H-JV8G9-BYJJQ
P3H89-V3P2R-JVBTF-YM2J2-FTMT3
RGM4T-3VT6B-GTYPY-3FHP2-HV2YJ
TTY4D-RDKK9-TYB2T-68WJW-M69KJ
BWPX2-XK2T8-3GV2W-KHQVP-QXCDV

Windows 7 Ultimate Retail

J783Y-JKQWR-677Q8-KCXTF-BHWGC
C4M9W-WPRDG-QBB3F-VM9K8-KDQ9Y
2VCGQ-BRVJ4-2HGJ2-K36X9-J66JG
MGX79-TPQB9-KQ248-KXR2V-DHRTD
FJHWT-KDGHY-K2384-93CT7-323RC
THHH2-RKK9T-FX6HM-QXT86-MGBCP
KH2J9-PC326-T44D4-39H6V-TVPBY
D8BMB-BVGMF-M9PTV-HWDQW-HPCXX
TFP9Y-VCY3P-VVH3T-8XXCC-MF4YK

ASP.NET MVC 1.0 的数据模型验证

ASP.NET MVC 1.0 的数据模型验证
很多同学喜欢将数据的验证放在控制层(Controller)里,这是非常不对的,违背MVC的初衷,对于模型数据的验证,当然是放在模型层里才恰当。也不需要专程写一个方法在SubmitChanges之前主动去调用,实际上SubmitChanges的时候会调用OnValidate方法,该方法失败后会抛出一个Application的异常。在Controller层里捕捉这个异常再做相应的处理就行了。如此一来更省事,分工更明确,代码更优雅。

以下是一段示例代码,来自ASP.NET MVC Step by Step的例子NerdDinner(删减部分字段)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.Linq;
using System.Web.Mvc;
using NerdDinner.Helpers;
 
namespace NerdDinner.Models {
 
    [Bind(Include="Title")]
    public partial class Dinner {
 
        public bool IsValid {
            get { return (GetRuleViolations().Count() == 0); }
        }
 
        public IEnumerable<ruleViolation> GetRuleViolations() {
 
            if (String.IsNullOrEmpty(Title))
                yield return new RuleViolation("Title is required", "Title");
 
            yield break;
        }
 
        partial void OnValidate(ChangeAction action) {
            if (!IsValid)
                throw new ApplicationException("Rule violations prevent saving");
        }
    }
}