我需要从成功的Ajax帖子中获取记录数。
由于数据类型为" html",我无法通过json检查特定的记录数。
所以,我正在做的是尝试将记录计数应用于ViewBag变量(来自Controller方法)并将其分配给隐藏的html字段,我可以在帖子后检查。如果返回0条记录,我可以向用户显示正确的消息。
我的流程如下:我使用的是MVC 5.2
但是,我遇到的问题是我在GET为1期间设置的初始值,从不更改。
我在调试期间验证过,当控制器发生POST时,ViewBag属性设置为0(没有返回记录)。我故意将初始值设置为1(在GET中),以查看值是否已更改。
有人可以告诉我为什么在POST之后JS变量没有被更新为0(上面的步骤4)?
这是我的代码:
// GET: Customers/CustomerProjects/Details
public async Task<ActionResult> Details()
{
ViewBag.projectCount = "1";
ViewBag.CustomerEmail = await db.GetCustomerDDLAsync();
return View();
}
[HttpPost]
// POST: Customers/CustomerProjects/Details/5
public async Task<ActionResult> Details(short? id)
{
if (id == null)
{
return View("IDIsNull");
}
ViewBag.CustomerEmail = await db.GetCustomerDDLAsync();
Customer customer = await db.GetProjectsByCustomerIDAsync(id);
if (customer == null)
{
return View("ObjectModelNull");
}
ViewBag.projectCount = customer.Projects.Count.ToString();
return View(customer);
}
@Html.Hidden("projCnt", (string)(ViewBag.projectCount))
if ($('#projCnt').val() == "0")
答案 0 :(得分:0)
Viewbag仅适用于1个视图,
当您转移到POST时,Viewbag为空。
您可以改用TempData。
查看链接:
编辑: 此外,还不是很清楚,也许您在更新ViewBag之前发生了返回视图? (即进入if之一)
答案 1 :(得分:0)
试试这个:
TempData["projectCount "] = 123;
TempData.Keep();