我有一个问题,我在搞清楚方面有点麻烦。我需要将一些数据(String)从Controller传递给已经强类型的视图。 我目前正在一个现场环境中工作,所以我不会完全了解结构或其他控制器/视图的传递,除了我正在工作的那些。
我猜这里不止一个,因为一个简单的ViewBag似乎不起作用。我已经尝试将字符串存储在viewbag中,但是没有显示在视图上。为了澄清,我使用了:
Viewbag.PassedString = "This is a test"
<div> @Viewbag.PassedString </div>
无论如何,就像我说的那样无效,我猜测数据在此过程中丢失了。 接下来,我尝试使用TempData,但这不起作用。
我忘了重要的事吗?有没有办法完成工作?
答案 0 :(得分:3)
你在这里有拼写错误。属性的名称应该是相同的两边,例如你在视图中使“p”变小,而不是那个,
尝试
<div> @Viewbag.PassedString </div>
更新: -
从您的查询中我了解到您正在退回json,ViewBag用于将数据从控制器传递到View Engine。在这种情况下,你将返回json,没有视图,所以为了使Viewbag工作,它应该返回一个视图。
再次更新: -
在你的代码中我猜你可以在这里传递对象: -
写
return Json(dataYouWantToPass, JsonRequestBehavior.AllowGet);
而不是
return Json("", JsonRequestBehavior.AllowGet);
在您的jquery中,您可以通过以下方式获得成功通话: -
$.ajax({
cache: false,
type: "GET",
url: "@(Url.Action("GetDownloadLink", "Export"))",
data: { "stadId": stadId, "catId": catId },
success: function(data) {
$('#bezig-tekst').html('');
$('#download-link').show();
alert(data); ////here you get the data you sent from controller.
},
error: function(xhr, ajaxOptions, thrownError) {
alert('Failed to retrieve xml.');
}
});
});
答案 1 :(得分:1)
您有一些语法错误(您使用什么作为编辑器?)。您应该在控制器中使用它:
ViewBag.PassedString = "This is a test";
并且在视图中:
@ViewBag.PassedString