我们可以在控制器中的Webmethod内初始化ViewBag吗?

时间:2016-10-17 12:13:32

标签: c# asp.net-mvc-4

我想使用ajax调用WebMethod然后初始化ViewBag,以便我可以在View中访问此ViewBag,但在使用ajax调用WebMethod后,ViewBag为空。 请告诉我ViewBag只能在Controller Actionresult中初始化吗?或者无论如何在WebMethod中初始化它。

这是ajax post请求,它正在调用控制器的Webmethod。

lstDoc.Add(new Document
{ 
    No = GridView.Rows[i].Cells[0].Text,
    Description = GridView.Rows[i].Cells[2].Text,
    INo = GridView.Rows[i].Cells[1].Text.ToUpper()
});

这是控制器中的WebMethod:

          $.ajax({
                  type: 'POST',
                  url: '/Home/InsertScore',
                  data: { Email: Em, Row: i, Answer: 'd' }
              });

2 个答案:

答案 0 :(得分:0)

您可以改用Session。

[HttpPost]
[WebMethod]
public void InsertScore(string Email ,string Row,char Answer)
{

 if(Answer=='d')
    {
      Session["m"]="Hot";
    }
    if (Answer == 'r')
    {
      Session["m"]="Cold";
    }
}

答案 1 :(得分:0)

  

请让我知道ViewBag只能在Controller内初始化   的ActionResult?

是的,你是对的。如果你想通过Ajax调用获得一些日期,你应该使用这种方法:

return Json(new { m = "HOT"}, JsonRequestBehavior.AllowGet);

并在客户端manualy

 $.ajax({
              type: 'POST',
              url: '/Home/InsertScore',
              data: { Email: Em, Row: i, Answer: 'd' }
              success: function(data)
              {
                alert(data.m);
              }
          });