Asp.net MVC JSON - PullRequest
       14

Asp.net MVC JSON

0 голосов
/ 22 мая 2010

Я работаю над проектом MVC, и у меня проблемы с JSON.

Я создал демонстрационный проект со списком цветов

    public JsonResult GetResult()
    {
        List<string> strList = new List<string>();
        strList.Add("white");
        strList.Add("blue");
        strList.Add("black");
        strList.Add("red");
        strList.Add("orange");
        strList.Add("green");
        return this.Json(strList);
    }

Я могу получить их на своей странице, но когда я пытаюсь удалить один цвет, то есть когда я отправляю следующее с помощью jquery

function deleteItem(item) {
        $.ajax({
            type: "POST",
            url: "/Home/Delete/white",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            success: ajaxCallSucceed,
            dataType: "json",
            failure: ajaxCallFailed
        });
    }

действие контроллера

public JsonResult Delete(string Color) {}

Цвет всегда возвращает ноль, даже если я указал "/ Home / Delete / white" в URL.

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

пожалуйста, кто-нибудь может направить меня в правильном направлении.

Ответы [ 4 ]

1 голос
/ 11 декабря 2010

Просто распространенное общественное мнение: это очень странно для параметров метода Pascal, как и вы ...

Самое простое решение вашей проблемы

Если переименовать параметр действия вашего контроллера в id, то это будет хорошо (в случае, если ваш маршрут по умолчанию определен как {controller}/{action}/{id}).

[HttpPost]
public JsonResult Delete(string id)
{
    // do what's required
}

Не забывайте об атрибутах

И не забудьте добавить атрибут в ваш метод действия, иначе веб-сканер сможет удалить все ваши записи о цветах.

Либо используйте HttpPost, либо даже лучше HttpDelete, потому что вы все равно используете Ajax-запрос, поэтому вы можете выполнить запрос DELETE.

1 голос
/ 22 мая 2010

Попробуйте изменить свой URL-адрес на:

"/Home/Delete?Color=white"

Причина в том, что нет маршрута, настроенного для обработки строки с именем color, как у вас.

Ознакомьтесь с информацией о том, как создать собственный маршрут, который будет обрабатывать ваш текущий формат URL.

http://www.asp.net/mvc/tutorials/creating-custom-routes-cs

0 голосов
/ 22 мая 2010

попробуйте это выше значения по умолчанию

routes.MapRoute("Color", "{controller}/{action}/{color}", new { controller = "Home", action = "Index", Color = "" }); 
0 голосов
/ 22 мая 2010

Проверьте ваши маршруты. (Обычно устанавливается в /global.asax.)

...