Я использую Asp.Net-Mvc, у меня в контроллере есть этот метод:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LinkAccount(string site, object id)
{
return this.Json(id);
}
Вот метод ajax, который вызывает его:
$.post("/Account/LinkAccount", { site: "Facebook",
id: FB.Facebook.apiClient.get_session().uid },
function(result) {
alert(result);
}, "json"
);
возвращая this.Json (id); заставляет работать оповещение ... оно предупреждает 7128383 (что-то похожее на это).
но если я изменю this.Json(id)
на this.Json(Conver.ToInt64(id));
, предупреждение не сработает ...
Есть идеи, почему я не могу преобразовать объект, полученный от объекта, в long?
Я уже знаю, что изменение метода LinkAccount
для принятия long вместо этого работает просто отлично. Просто он мне нужен как объект, потому что на некоторых других сайтах, на которые я ссылаюсь, есть строки для идентификаторов, а не long.
ОБНОВЛЕНИЕ: Я попытался запустить код на локальном хосте, чтобы установить точку останова. Сначала я изменил строку return this.Json(Convert.ToInt64(id));
на long idAsLong = Convert.ToInt64(id));
. Вот что говорит мне отладчик:
При наведении курсора на id появляется сообщение: " id | {string [1]} "
и когда я нажимаю кнопку «плюс», отображается: « [0] | '7128383' »
Когда я наводю курсор мыши на idAsLong, он говорит: « idAsLong | 0 »
Почему он не конвертирует это должным образом?