.NET MVC Controller未绑定到对象类型

时间:2016-08-31 22:13:40

标签: c# asp.net-mvc

非常直接$ .post(网址,数据)

数据就是这个对象

                 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 个答案:

答案 0 :(得分:1)

您需要创建命名类。

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");
    }

答案 1 :(得分: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输入参数的类型。您可能需要在调用之前或在其中进行一些转换

答案 2 :(得分:0)

我猜MVC控制器上的对象类型参数不受支持/设计不好。与MVC一起不支持其视图/ Razor语法上的泛型类型。