【发布时间】:2017-01-17 19:22:38
【问题描述】:
我正在学习并致力于 ASP.net MVC 5 项目。所以,我有一个模型视图,其中包含其他模型视图。
父模型视图
public class FullConfigMV
{
some properties here
public ElementStyleMV Page { get; set; }
}
现在下面是我想要实现的目标。
进行 ajax 调用
一旦 ajax 调用命中控制器函数,设置一些值
现在我需要将该对象传递给另一个控制器操作,该操作将返回它的视图。
第 1 步。
<script>
$(document).ready(function()
{
$("#tan").change(function()
{
alert(this.value);
$.ajax({
type: 'POST',
url: '/Settings/GetAvailableLocationsFor',
data: { accountId: 28462, groupId: 35},
success: function (data) {
//Whatever
},
error: function () {
DisplayError('Failed to load the data.');
}
});
});
});
</script>
在第 1 步之后,我的断点在
public ActionResult GetAvailableLocationsFor(int accountId, int groupId)
{
FullConfigMV configData = SetLoader.GetDSettings(accountId, groupId);
Utils.SiteCss = configData.CssStyles();
// NOW AT THIS PLACE I WANT TO CALL ANOTHER CONTROLLER FUNCTION
// AND PASS THE `configData Obj`
return View();
}
我知道我们有类似的东西
return RedirectToAction("Index","Home");
但是如何通过config Obj
我要调用的控制器函数在
Home Controller,动作名称为Index
public ActionResult Index(FullConfigMV data)
{
return View();
}
如果要求看起来很奇怪,请对此承担/幽默。
编辑
在解决方案建议“使用TempData”之后,但问题是我的控制器中有两个索引操作。我希望SECOND 索引操作受到打击。但是第一个被击中了。
第一:
public ActionResult Index()
{
}
第二
[HttpPost]
public ActionResult Index(FullConfigMV data)
{
}
使用的代码是
public ActionResult GetAvailableLocationsFor(int accountId, int groupId)
{
FullConfigMV configData = SetLoader.GetDSettings(accountId, groupId);
SimUtils.SiteCss = configData.CssStyles();
TempData["config"] = configData;
return RedirectToAction("Index", "Home");
}
【问题讨论】:
-
要在
RedirectToAction调用之间传递对象,请使用 Session 或 TempData。如果您只需要其他控制器操作的(非视图)结果 - 您将该代码移动到一个新类中,以便任何控制器都可以获得结果。 -
请不要在您的问题中使用每个版本标签。您说过您使用的是第 5 版;使用该版本标签。这次我已经为你编辑了。
-
@MikeMcCaughan:谢谢。我会从下一次开始照顾它。
-
你的
GetAvailableLocations有视图,还是用来处理数据的? -
它不需要视图。只是为了处理数据。
标签: c# asp.net-mvc asp.net-mvc-5