Asp.net mvc 在MVC中如何在两个视图(公共控制器)之间传递值

Asp.net mvc 在MVC中如何在两个视图(公共控制器)之间传递值,asp.net-mvc,asp.net-mvc-4,razorengine,Asp.net Mvc,Asp.net Mvc 4,Razorengine,以下是我查询的相关部分的结构: AccountController { [HTTPGET] getDetail(int ID) { ViewBag.classID = ID; } } cshtml razor "view1" -------------- //calling to getDetail(id) and it set the ViewBag.classID. cshtml razor "view2" -------------- &l

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

  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.
});
AccountController
{
[HTTPGET]
getDetail(内部ID)
{    
ViewBag.classID=ID;
}
}
cshtml razor“视图1”
--------------
//调用getDetail(id)并设置ViewBag.classID。
cshtml razor“视图2”
--------------
$(窗口)。加载(函数(){
警报('@ViewBag.classID);//问题:即使从另一个视图设置,每次都给我空值。
});

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

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

请建议我,如果有任何替代或最好的方法或如何纠正这一点

谢谢您

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

    [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()" />

函数submitForm(){
jQuery.ajax({
键入:“获取”,
url:“@url.Action(“getDetail”)”+“/“+”123“,//如果需要,请在此处动态获取您的123
数据类型:“json”,
contentType:“应用程序/json;字符集=utf-8”,
成功:功能(数据){
警报(数据);
},
失败:函数(errMsg){
警报(errMsg);
}
});
}
当您单击该按钮时,会收到一个带有Json返回数据的警报。您可以在任何情况下调用JQuery AJAX GET,例如onload文档等

产出将是-

注意:

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

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

我想从一个视图和另一个视图设置值。View1是对控制器的
GetDetail()
的调用。现在,View2应该能够访问View1设置的值。如何实现。您是否尝试过使用TempData[“classID”]?