c# - @Viewbag 第一次使用时给出空值
问题描述
好的,问题是我试图从视图中获取一个值<form method=" post">
,然后将其带到控制器并对其进行一些数学运算,然后使用 Tempdata 将其重新发送到视图。问题是,我第一次尝试使用它时,我得到一个空值,但是当网站重新加载时,我第二次得到我输入的最后一个值的值:
控制器:
[HttpPost]
public ActionResult Home_Page(FormCollection frm)
{
int firstnumber = Convert.ToInt32(frm["firstnumber"]);
int secondnumber = Convert.ToInt32(frm["secondnumber"]);
TempData["secondnumber"] = secondnumber;
TempData.Keep();
//int differenceresult = firstnumber - secondnumber;
//int sumresult = firstnumber + secondnumber;
//ViewBag.differenceresult = differenceresult;
//ViewBag.sumresult = sumresult;
return View();
}
看法:
$("#btnsum").click(function () {
alert(@Html.Encode(@TempData["secondnumber"]))
})
谁能帮我???
解决方案
第一次加载页面时,它会触发HttpGet
Action Method 上的 Action Verb Home_Page
。换句话说,您需要一个HttpGet
Action 方法,以便当您触发您HttpPost
在上面的代码中发布的内容时,它会正确声明您的 TempData 变量。这是我可以为您提供的示例:
[HttpGet]
public ActionResult Home_Page()
{
int firstnumber = Convert.ToInt32(frm["firstnumber"]);
int secondnumber = Convert.ToInt32(frm["secondnumber"]);
TempData["secondnumber"] = secondnumber;
TempData.Keep();
return View();
}
如果你的两个动作名称相同,但动作动词不同(HttpGet、HttpPost),那么它们必须有不同的参数声明,这样编译器就不会认为它有歧义。所以在这种情况下,在我的例子中,我没有声明任何参数。
推荐阅读
- java - java - 如何将Excel中的行放入java中的ArrayList?
- javascript - 在 Javascript 中检查结果时如何修复“未定义”对象?
- flutter - (Flutter) 在 UI 中以不同组显示 List 的数据
- java - Lombok 没有在 .class 文件中生成样板文件并且找不到任何解决方案
- java - android WebView中的上传按钮不起作用
- woocommerce - 在 WooCommerce 的“我的帐户”页面上添加一个按钮以订购详细信息
- r - p-色散(maxmin)问题的最佳线性化?
- python - 如果未以形式给出值,则默认情况下不存储空值?
- r - 如何定义输出以显示在闪亮应用程序的屏幕上?
- php - Php将json签名保存为文件夹中的图像