New tests.
[mono.git] / mcs / class / System.Web.Mvc2 / System.Web.Mvc / FormContext.cs
1 /* ****************************************************************************\r
2  *\r
3  * Copyright (c) Microsoft Corporation. All rights reserved.\r
4  *\r
5  * This software is subject to the Microsoft Public License (Ms-PL). \r
6  * A copy of the license can be found in the license.htm file included \r
7  * in this distribution.\r
8  *\r
9  * You must not remove this notice, or any other, from this software.\r
10  *\r
11  * ***************************************************************************/\r
12 \r
13 namespace System.Web.Mvc {\r
14     using System;\r
15     using System.Collections;\r
16     using System.Collections.Generic;\r
17     using System.Diagnostics.CodeAnalysis;\r
18     using System.Web.Script.Serialization;\r
19 \r
20     public class FormContext {\r
21 \r
22         private readonly Dictionary<string, FieldValidationMetadata> _fieldValidators = new Dictionary<string, FieldValidationMetadata>();\r
23 \r
24         public IDictionary<string, FieldValidationMetadata> FieldValidators {\r
25             get {\r
26                 return _fieldValidators;\r
27             }\r
28         }\r
29 \r
30         public string FormId {\r
31             get;\r
32             set;\r
33         }\r
34 \r
35         public bool ReplaceValidationSummary {\r
36             get;\r
37             set;\r
38         }\r
39 \r
40         public string ValidationSummaryId {\r
41             get;\r
42             set;\r
43         }\r
44 \r
45         [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",\r
46             Justification = "Performs a potentially time-consuming conversion.")]\r
47         public string GetJsonValidationMetadata() {\r
48             JavaScriptSerializer serializer = new JavaScriptSerializer();\r
49 \r
50             SortedDictionary<string, object> dict = new SortedDictionary<string, object>() {\r
51                 { "Fields", FieldValidators.Values },\r
52                 { "FormId", FormId }\r
53             };\r
54             if (!String.IsNullOrEmpty(ValidationSummaryId)) {\r
55                 dict["ValidationSummaryId"] = ValidationSummaryId;\r
56             }\r
57             dict["ReplaceValidationSummary"] = ReplaceValidationSummary;\r
58 \r
59             return serializer.Serialize(dict);\r
60         }\r
61 \r
62         public FieldValidationMetadata GetValidationMetadataForField(string fieldName) {\r
63             return GetValidationMetadataForField(fieldName, false /* createIfNotFound */);\r
64         }\r
65 \r
66         public FieldValidationMetadata GetValidationMetadataForField(string fieldName, bool createIfNotFound) {\r
67             if (String.IsNullOrEmpty(fieldName)) {\r
68                 throw Error.ParameterCannotBeNullOrEmpty("fieldName");\r
69             }\r
70 \r
71             FieldValidationMetadata metadata;\r
72             if (!FieldValidators.TryGetValue(fieldName, out metadata)) {\r
73                 if (createIfNotFound) {\r
74                     metadata = new FieldValidationMetadata() {\r
75                         FieldName = fieldName\r
76                     };\r
77                     FieldValidators[fieldName] = metadata;\r
78                 }\r
79             }\r
80             return metadata;\r
81         }\r
82 \r
83     }\r
84 }\r