использование json для привязки объекта в asp.net mvc2 - PullRequest
0 голосов
/ 27 декабря 2011

Я пытаюсь связать строковый объект JSON с моделью и несколькими другими строками в контроллере, и он не работает.

это невозможно,

$.ajax({
url: "/SrcManager/AddDataSource",
type: "POST",
data: JSON.stringify({
    content: ct,
    dataSourceName: $("#dataSrcName").val(),
    parameters: parametersCollection,
    sourceContentId: sourceContentId,
    sourceId: null,
    type: contType
}),
success: function (data) {
    if (data.length > 1)
    {
        alert("DataSource Saved Successfully");
        $("#dataSrcId").val(data);
    }
}
});

и var parametersCollection = [];

функция IPParameters (paramName, paramValue) {this.ParamName = paramName;this.ParamValue = paramValue;}

*** action method : public string AddDataSource(ContentModel scvm){.........}

Почему вышеописанное не работает.Если это не поддерживается или какая-либо ошибка в коде, пожалуйста, предложите правильный путь.

В ContentModel я сопоставляю параметры с List<Parameters>.

Я добавил JsonValueProviderFactory также в global.asax.

Модель C #:

public class SourceContentViewModel
{
    public string sourceId { get; set; }

    public string dataSourceName { get; set; }

    public string sourceContentId { get; set; }

    public string content { get; set; }

    public string type { get; set; }
    public List<Parameters> parameters { get; set; }

    public SourceContentViewModel()
    {
        parameters = new List<Parameters>();
    }
}

public class Parameters
{
    public string ParamName { get; set; }
    public string ParamValue { get; set; }
}

1 Ответ

2 голосов
/ 27 декабря 2011

Вы не можете отправить JSON в приложение ASP.NET MVC 2, поскольку не существует готовой фабрики JSON-провайдеров, которая позволила бы вам прочитать запрос.Он встроен в ASP.NET MVC 3. Вы можете взглянуть на следующую запись в блоге и включить JsonValueProviderFactory, обсуждавшуюся там.После этого вы сможете отправлять JSON-запросы на действия контроллера ASP.NET MVC 2 после его регистрации:

protected void Application_Start() 
{
    RegisterRoutes(RouteTable.Routes);
    ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
}

Также обратите внимание на параметр contentType: 'application/json; charset=utf-8' при отправке запроса, который инструктирует отправляющее устройство связываниязапрос JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...