Сериализируйте в формате читаемого пользователем текста

Используйте 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.


                

5
задан Blair Conrad 3 November 2008 в 15:49
поделиться

3 ответа

Для Сериализации в 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 также...

6
ответ дан 13 December 2019 в 05:44
поделиться

Встроенными опциями сериализации для .NET является Xml, Xml-мыло и двоичный файл. Так как Вы исключили xml, и двоичный файл определенно не человекочитаем, Вы будете иметь к самокрутке.

При прокрутке собственного у Вас есть несколько опций:

  • Добавьте методы Утилиты или Расширения к классу, как предложенный AviewAnew
  • Расширьте Систему. Время выполнения. Сериализация. Средство форматирования / Система Реализации. Время выполнения. Сериализация. IFormatter
  • Найдите универсальный компонент онлайн через Google, который сделает то, что Вы хотите.

Обратите внимание, что 2-й объект может быть специализирован для Вашего определенного класса (он не должен мочь обработать любой класс, если Вы не хотите его к), и последние два объекта не являются взаимоисключающими.

Я искал средство форматирования.Net JSON в прошлом и там существует определенно несколько опций. Однако я закончил тем, что шел другое направление то время. Я просто не чувствовал себя очень уверенно ни в одном из них. Возможно, кто-то еще может предоставить более определенную рекомендацию. JSON становится достаточно большим, что, надо надеяться, Microsoft будет включать "собственную" поддержку его в платформе скоро.

1
ответ дан 13 December 2019 в 05:44
поделиться

Я нашел здесь исчерпывающую документацию:

http://pietschsoft.com/post/2008/02/NET-35-JSON-Serialization-using-the-DataContractJsonSerializer.aspx

с этим полезным классом ( поддерживают обобщенные типы)

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;
  }
}
4
ответ дан 13 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: