см. Документацию API ... ответ будет содержать символ валюты.
и пример на Github объясняет, как установить пункт назначения:
$rqData = new \hotelbeds\hotel_api_sdk\helpers\Availability();
$rqData->destination = new Destination("PMI");
Редактирование:
Этот метод больше не должен быть необходим с прибытием MVC 3, поскольку это будет обработано автоматически - http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx
<час>, можно использовать этот ObjectFilter:
public class ObjectFilter : ActionFilterAttribute {
public string Param { get; set; }
public Type RootType { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if ((filterContext.HttpContext.Request.ContentType ?? string.Empty).Contains("application/json")) {
object o =
new DataContractJsonSerializer(RootType).ReadObject(filterContext.HttpContext.Request.InputStream);
filterContext.ActionParameters[Param] = o;
}
}
}
можно тогда применить его к методам контроллера как так:
[ObjectFilter(Param = "postdata", RootType = typeof(ObjectToSerializeTo))]
public JsonResult ControllerMethod(ObjectToSerializeTo postdata) { ... }
Так в основном, если тип контента сообщения является "application/json", это перейдет к действию и отобразит значения на объект типа, который Вы определяете.
Вы говорите, что "Я не использую формы для управления данными". Но Вы делаете POST. Поэтому Вы, на самом деле, используете форму, даже если это пусто.
.ajax's $ тип данных говорит jQuery, что вводит сервер, будет возврат , не, что Вы являетесь передающими. POST может только передать форму. jQuery преобразует данные в пары ключ/значение и передаст их как строку запроса. Из документов:
Данные, которые будут отправлены на сервер. Это уже преобразовывается в строку запроса, если не строка. Это добавляется к URL для ПОЛУЧАТЬ-ЗАПРОСОВ. См. processData опцию предотвратить эту автоматическую обработку. Объектом должны быть Пары ключ/значение. Если значением является Массив, jQuery сериализирует несколько значений с тем же ключом т.е. {нечто: ["bar1", "bar2"]} становится '& foo=bar1& foo=bar2'.
Поэтому:
Существует класс JavaScriptSerializer , который можно использовать также. Это позволит Вам десериализовать json к объекту.NET. Существует дженерик Deserialize<T>
, хотя Вам будет нужен объект.NET иметь подобную подпись как JavaScript один. Дополнительно существует также DeserializeObject
метод, который просто делает плоскость object
. Можно затем использовать отражение для достигания свойств, в которых Вы нуждаетесь.
, Если Ваш контроллер берет FormCollection
, и Вы не добавили ничто больше к data
, json должен быть в form[0]
:
public ActionResult Save(FormCollection forms) {
string json = forms[0];
// do your thing here.
}