2016-08-31 2 views
0

Очень прямой $ .post (URL, данные).NET MVC контроллер не является обязательным для типа объектов

данные этого объекта

    var model = { 
        applNo: pdAppNo, 
        amount: 999, 
        schldDate: new Date(), 
        userId: "corey", 
        tdcId: "234234234" 
       }; 

Вызов контроллера MVC, который устанавливается как

[HttpPost] 
    public JsonResult PostScheduleMakeUpPayment(object model) 
    { 
     //return _updateTdc.ProcessMakeUpPayment(applNo, amount, schldDate, userId, tdcId); 
     return Json("Success:True"); 
    } 

Внутри «модели» контроллера его не показаны данные json, только «{object» '

Так что MVC не будет разрешить мне отправлять json в тип объекта?

+3

Создайте новый именованный класс для вашего объекта. Для автоматического привязки требуются имена свойств. – Jasen

ответ

1

Вам нужно создать класс named.

public class TestModel 
{ 
public string applNo {get;set;} 
public int amount{get;set;} 
public DateTime schldDate{get;set;} 
public string userId{get;set;} 
public string tdcId{get;set;} 
} 

    [HttpPost] 
    public JsonResult PostScheduleMakeUpPayment(TestModel model) 
    { 
     //return _updateTdc.ProcessMakeUpPayment(model.applNo, model.amount, model.schldDate, model.userId, model.tdcId); 
     return Json("Success:True"); 
    } 
+0

Правильно я это понимаю. Думаю, мой вопрос в том, как разрешить типы объектов в качестве параметров моего контроллера? Я думаю, я мог бы просто создать тип строки и проверить Json, чтобы увидеть, будет ли он десериализован на разные типы. Basicall Я хочу, чтобы один метод, который будет контролировать публикацию плановых платежей в своих типах, может быть не всегда одинаковым. – chdev77

+0

Если вы хотите задать еще одну вещь, вы можете спросить вот так. Если вы хотите вернуть объект как Json, вы можете так писать. return new Json ({Success: true, Message: "No Error"}); вы можете обрабатывать ответ с клиентской стороны. –

+0

Я не говорю о типе возврата. Только тип параметра ... запрос. Могу ли я создать собственное связующее устройство? Я не нашел примеров этого, я могу связать свою проблему. – chdev77

1

Строка Json представляет собой набор ключей ключ-значение. Вы можете разместить свой объект в виде строки json и использовать функцию для добавления в словарь своих значений, а затем использовать ее в функции контроллера. Например:

public static Dictionary<string,object> BinderModel(string model) 
{ 
    Dictionary<string,JToken> result = new Dictionary<string,object>(); 
    JObject jObject = JObject.Parse(model); 
    foreach (JProperty x in (JToken)jObject) 
    { 
     result.Add(x.Name,x.Value); 
    } 
    return result; 
} 

, а затем ваша функция контроллера, как этот

[HttpPost] 
public JsonResult PostScheduleMakeUpPayment(string model) 
{ 
    Dictionary<string,object> values = BinderModel(jsonString); 
    //return _updateTdc.ProcessMakeUpPayment(values["applNo"], values["amount"], values["schldDate"], values["userId"], values["tdcId); 
    return Json("Success:True"); 
} 

типа значений модели зависит от типов входных параметров ProcessMakeUpPayment. Возможно, вам понадобится сделать некоторое преобразование, прежде чем вы его назовете или в нем

+0

Я тоже думал об этом, но ваша модель js должна быть сплющена. – chdev77

+0

Я приму этот ответ. – chdev77

0

Я предполагаю, что параметры типа объекта на контроллерах MVC не поддерживаются/плохой дизайн. Наряду с MVC не поддерживает общие типы в своем представлении/синтаксисе Razor.

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