2012-05-04 3 views
0

Я использую Asp.net MVC 3 и библиотеку Json.net.Сериализовать только часть класса модели представления

У меня есть модель класса модели FranchiseInfo с несколькими свойствами.

public class FranchiseInfo 
    { 
     public string FolderName { get; set; } 
     public string FullName { get; set; } 

     public List<string> TestDropDown { get; set; } 

     public void Initialize() 
     { 
      TestDropDown = new List<string> 
           { 
            "Test1", 
            "Test2" 
           }; 
     } 

     public void SetDefaultValues() 
     { 
      FolderName = "SomeData"; 
      FullName = "SomeOtherData"; 
     } 
    } 

У меня есть контроллер FranchiseData, который сериализует данные модели модели Json.

public ActionResult FranchiseData(string network) 
     { 
      JsonNetResult jsonNetResult = new JsonNetResult { Formatting = Formatting.Indented }; 

      FranchiseInfo franchiseInfo = new FranchiseInfo(); 

      franchiseInfo.Initialize(); 
      jsonNetResult.Data = franchiseInfo; 

      return jsonNetResult; 
     } 

Контроллер имеет один параметр, называемый сетью. Когда первая страница загружается, я хочу, чтобы все свойства из модели просмотра FranchiseInfo были сериализованы и отправлены в представление. В этом случае значение сети равно null. Все идет нормально.

$.getJSON("Home/FranchiseData", function (data) { 
    // get all FranchiseInfo properties 
} 

Когда конкретное событие происходит, я делаю новый запрос на те же FranchiseData контроллера передачи параметры сети, который связывается с параметром-регулятора.

onTemplateChange = function (value) { 
     var network = $("#networks :selected").val(); 
     $.getJSON("Home/FranchiseData", { network: network }, function (data) { 
     // get only FolderName and FullName properties 
}); 
} 

Теперь я хочу, чтобы вызвать SetDefaultValues ​​() метод Franchise Info вид модели класса, который устанавливает значения по умолчанию для некоторых из моих свойств и отправить только эти свойства вернуться к просмотру.

Так что в основном я использую тот же Contoller FranchiseData для сериализации данных модели модели из FranchiseInfo. Когда сеть параметров имеет значение null, все свойства FranchiseInfo должны быть сериализованы (FolderName, FullName и TestDropDown). Когда я вызываю контроллер агаинга и передаю значение сетевому параметру, я хочу вызвать метод SetDefaultValues ​​(), установить некоторые свойства и снова сериализовать только эти свойства и отправить их на сервер (только для FolderName и FullName). Есть ли способ сделать это? Любая помощь будет оценена. Спасибо!

ответ

2

Создайте базовый класс, который содержит минимальное количество свойств и наследует его.

Отправьте обратно базовый класс, если вы хотите использовать меньшее количество свойств и подкласс в противном случае.

+1

Благодарим вас за ответ. Я решил использовать анонимный класс для сериализации только тех свойств, которые мне нужны. – Mdb

Смежные вопросы