Используйте PHP, чтобы определить, является ли страница Редактированием или Созданием, и установите переменную как таковую. Вы можете посмотреть на сегмент URL с помощью класса URI.
uri->segment(3) == "create") ? TRUE : FALSE;
?>
Затем используйте PHP, чтобы написать соответствующие правила для этой конкретной версии View.
$("#edit_member").validate({
....
rules: {
....
email: {
required: true,
Email: true,
remote: {
url: baseUrl + "/AddMember/isEmail",
}
},
....
Вышеуказанное работает только тогда, когда эта часть JavaScript находится в файле View и не включена из внешнего файла JavaScript.
В противном случае, если .validate()
является частью внешнего JavaScript-файла, вы можете использовать метод .rules()
вместо .
После включения JavaScript (после вызова .validate()
) программным образом удалите правило remote
.
Для Сериализации в JSON в.NET, Вы делаете следующим образом:
public static string ToJson(IEnumerable collection)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(collection.GetType());
string json;
using (MemoryStream m = new MemoryStream())
{
XmlDictionaryWriter writer = JsonReaderWriterFactory.CreateJsonWriter(m);
ser.WriteObject(m, collection);
writer.Flush();
json = Encoding.Default.GetString(m.ToArray());
}
return json;
}
Объект наборов должен иметь атрибут "DataContract", и у каждого участника, Вы хотите быть сериализированными в JSON, должен быть "DataMember" attibute.
Возможно, что это только работает на.NET 3.5. Но существует одинаково простая версия для 2,0 также...
Встроенными опциями сериализации для .NET является Xml, Xml-мыло и двоичный файл. Так как Вы исключили xml, и двоичный файл определенно не человекочитаем, Вы будете иметь к самокрутке.
При прокрутке собственного у Вас есть несколько опций:
Обратите внимание, что 2-й объект может быть специализирован для Вашего определенного класса (он не должен мочь обработать любой класс, если Вы не хотите его к), и последние два объекта не являются взаимоисключающими.
Я искал средство форматирования.Net JSON в прошлом и там существует определенно несколько опций. Однако я закончил тем, что шел другое направление то время. Я просто не чувствовал себя очень уверенно ни в одном из них. Возможно, кто-то еще может предоставить более определенную рекомендацию. JSON становится достаточно большим, что, надо надеяться, Microsoft будет включать "собственную" поддержку его в платформе скоро.
Я нашел здесь исчерпывающую документацию:
с этим полезным классом ( поддерживают обобщенные типы)
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
public class JSONHelper
{
public static string Serialize<T>(T obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, obj);
string retVal = Encoding.Default.GetString(ms.ToArray());
ms.Dispose();
return retVal;
}
public static T Deserialize<T>(string json)
{
T obj = Activator.CreateInstance<T>();
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
obj = (T)serializer.ReadObject(ms);
ms.Close();
ms.Dispose();
return obj;
}
}