MVC C#将信息从控制器传递到视图

时间:2014-07-15 10:46:32

标签: c# asp.net-mvc viewbag tempdata

我有一个问题,我在搞清楚方面有点麻烦。我需要将一些数据(String)从Controller传递给已经强类型的视图。 我目前正在一个现场环境中工作,所以我不会完全了解结构或其他控制器/视图的传递,除了我正在工作的那些。

我猜这里不止一个,因为一个简单的ViewBag似乎不起作用。我已经尝试将字符串存储在viewbag中,但是没有显示在视图上。为了澄清,我使用了:

Viewbag.PassedString = "This is a test"

<div> @Viewbag.PassedString </div>

无论如何,就像我说的那样无效,我猜测数据在此过程中丢失了。 接下来,我尝试使用TempData,但这不起作用。

我忘了重要的事吗?有没有办法完成工作?

2 个答案:

答案 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