MVC C # для Json правильный способ форматирования URL в массив строк? - PullRequest
1 голос
/ 05 марта 2012

Я пытаюсь понять, как правильно обрабатывать обратную косую черту в URL-адресах в массиве строк, возвращаемых через Json ... Я прокомментировал цель ниже

   public JsonResult PhotosByListingId(int id)
    {
       var pics =  _listingRepository.GetById(id).ListingPhoto.ToList();
       List<string> l = new List<string>();

        foreach(var p in pics)
        {
            //l.Add("albums\\/album1\\/" + p.PhotoName);   //nope
            //l.Add(@"albums\/album1\/" + p.PhotoName);  //nope
            l.Add("albums/album1/" + p.PhotoName); //????? nope
        }

        string[] s = l.ToArray();

        return Json(s, JsonRequestBehavior.AllowGet);

        //needs to be this..THE GOAL
        //  ["albums\/album1\/10k.jpg","albums\/album1\/10l.jpg","albums\/album1\/10y.jpg"]


        //but is returning this?
        // ["albums/album1/10k.jpg","albums/album1/10l.jpg","albums/album1/10y.jpg"]

}

1 Ответ

0 голосов
/ 05 марта 2012

Вы можете попробовать string.Replace:

   public JsonResult PhotosByListingId(int id)
{
   var pics =  _listingRepository.GetById(id).ListingPhoto.ToList();
   List<string> l = new List<string>();

    foreach(var p in pics)
    {
        l.Add("albums/album1/".Replace("/", "\\/") + p.PhotoName);
    }

    string[] s = l.ToArray();

    return Json(s, JsonRequestBehavior.AllowGet);
}

Поскольку сериализатор javascript преобразует косые черты, вы можете реализовать сериализацию самостоятельно и изменить сгенерированный JSON:

        public string CustomSerialised()
    {
        string test = "/This/That/The other/";
        List<string> arr = new List<string>();
        arr.Add(test);
        arr.Add(test);
        arr.Add(test);

        System.Web.Script.Serialization.JavaScriptSerializer s = new System.Web.Script.Serialization.JavaScriptSerializer();

        return s.Serialize(arr).Replace("/","\\/");
    }

Это можетпереходить к использованию стандартного шаблона маршрутизации при использовании в контроллере.

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