【问题标题】:How to pass value between two views (common controller) in MVC如何在 MVC 中的两个视图(公共控制器)之间传递值
【发布时间】:2014-02-18 07:52:42
【问题描述】:

以下是我的查询相关部分的结构:

  AccountController
  {

 [HTTPGET]
 getDetail(int ID)
 {    
  ViewBag.classID = ID;
 }
 }

cshtml razor "view1"
 --------------
   //calling to getDetail(id) and it set the ViewBag.classID.

cshtml razor "view2"
 --------------
  <script type="text/javascript">
$(window).load(function () {
        alert('@ViewBag.classID);   //PROBLEM: gives me empty value everytime even though set from another view.
});

控制器对于两个视图都是通用的。

问题:view1 需要控制器并将 CLASSID 设置到 viewbag 中。 现在,在 view2 的 jquery 加载事件中,我想访问 viewBag 值,但它不可用。 我需要根据 viewbag.classID 上存在的值来渲染 cshtml。

如果有任何替代或最佳方法或如何纠正此问题,请向我提出建议。

谢谢你

【问题讨论】:

  • 您是否尝试过使用 TempData["classID"]?

标签: asp.net-mvc asp.net-mvc-4 razorengine


【解决方案1】:

您可以将类 ID 作为 JSON 返回并在 JQuery 中使用,如下所示,而不是使用 ViewBag(Viewbag 只持续到呈现视图,并且一旦呈现 View,ViewBag 数据就会丢失)。假设您有以下控制器操作 -

    [HttpGet]
    public ActionResult getDetail(int id)
    {
        return Json(id + " New", JsonRequestBehavior.AllowGet);
    }

然后你可以通过以下方式使用 JQuery 调用这个动作 -

<script src="~/Scripts/jquery-1.10.2.min.js"></script>

<script>
    function submitForm() {
        jQuery.ajax({
            type: "GET",
            url: "@Url.Action("getDetail")" + "/" + "123", // Get your 123 dynmically here if you want
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                alert(data);
            },
            failure: function (errMsg) {
                alert(errMsg);
            }
        });
    }
</script>

<input type="button" value="Click" onclick="submitForm()" />

当您单击按钮时,您会收到一条带有 Json 返回数据的警报。您可以在任何情况下调用此 JQuery AJAX GET,例如加载文档等。

输出将是 -

注意:

如果您不想遵循上述方法,那么您可以使用Session variable 来存储和检索信息。

编辑 使用TempData - 当您从一个控制器移动到另一个控制器或从一个操作移动到另一个操作时,这有助于维护数据。

【讨论】:

  • 我想从一个视图和另一个视图设置值。 View1 调用控制器的GetDetail()。现在,View2 应该能够访问 View1 设置的值。它是如何实现的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多