如何在ASP.NET MVC应用中从视图向控制器传递临时数据
视图向控制器传递临时数据并用于重定向的方案
下面提供几种实用的实现方式,适配你的表单提交场景:
方法1:使用表单隐藏字段
在表单内添加隐藏输入框,把临时数据存入其中,提交表单时自动传递到控制器:
视图HTML代码
<form id="createFormName" action="/YourController/YourAction" method="post"> <!-- 其他表单元素 --> <input type="hidden" id="tempData" name="TempDataValue" value="你的临时数据值" /> <button id="btnContinue">提交</button> </form>
控制器代码
[HttpPost] public ActionResult YourAction(string TempDataValue) { // 根据临时数据判断重定向逻辑 if (TempDataValue == "特定值") { return RedirectToAction("TargetAction1"); } else { return RedirectToAction("TargetAction2"); } }
动态设置临时数据的JS代码
如果临时数据是JS里动态生成的,可在提交前修改隐藏字段的值:
$('#btnContinue').click(function () { var createFormName = $("#createFormName"); // 动态设置临时数据 $("#tempData").val("动态生成的临时值"); createFormName.submit(); });
方法2:通过URL参数传递
修改表单的action属性,直接把临时数据拼接到URL参数中(适合GET请求场景,或需要在URL中可见的情况):
JS代码
$('#btnContinue').click(function () { var createFormName = $("#createFormName"); var tempValue = "你的临时数据"; // 修改表单action,添加参数 createFormName.attr("action", "/YourController/YourAction?TempDataValue=" + tempValue); createFormName.submit(); });
控制器代码
[HttpPost] public ActionResult YourAction(string TempDataValue) { // 重定向逻辑同方法1 if (TempDataValue == "特定值") { return RedirectToAction("TargetAction1"); } else { return RedirectToAction("TargetAction2"); } }
额外提示
如果需要在重定向后仍然保留临时数据供后续视图使用,可以在控制器中把接收的值存入TempData:
TempData["StoredTempData"] = TempDataValue;
- 隐藏字段方式更适合敏感数据,URL参数会暴露在地址栏中,注意数据安全性。
内容的提问来源于stack exchange,提问作者Gopesh Kumar
相关产品推荐
相关产品推荐

