我正在建立一个短信系统。我有联系人,希望允许用户选择多个联系人并向他们发送消息。
我想暂时维护用户选择的联系人,以便当用户点击SEND按钮时我可以处理该列表。
我正在使用C#MVC4和Ajax调用代码隐藏方法来创建TempData或Session变量。问题是,在设置TempData和Session变量之后我想在屏幕上显示这些数据,但TempData和Session Variable都是空的。作为测试,我只是在Session Test Variable中保存“ok”。如果你有一个更好的想法,它将起到同样的作用,它也会受到影响。
感谢名单
//Javascript function residing on the View
function addToSendList(id) {
$.ajax({
type: "POST",
url: "AddToSendList",
contentType: "application/json;chartset=utf-8",
dataType: "json",
data: "{'id':'" + id + "'}",
success: function (data) {
alert(@Session["test"]);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
}
//Method on Controller that is called
public JsonResult AddToSendList(string id)
{
int cid = int.Parse(id);
List<Contact> contacts = (from c in db.Contacts
where c.Id==int.Parse(id)
select c).ToList();
Session["test"] = "ok";
return Json(contacts, JsonRequestBehavior.AllowGet);
}
修改 抱歉,我犯了一个错误,我要将联系人发回给ajax列表。这就是我遇到问题的地方。如何维护该用户选择的列表?
答案 0 :(得分:0)
这不起作用,因为您正在尝试在javascript中执行服务器端代码。服务器端部分仅在最初呈现页面时执行,并且在ajax回调中不具有更新的值。
您可以通过这种方式将值保存到会话中,但是您无法在JavaScript中像这样访问它。
您可以考虑使用来自控制器的json响应来传回它 - 而不是真正的标志。
return Json(Session["test"]);
success: function (data) {
alert(data);
}