繁体   English   中英

如何在Asp.net MVC中将值从部分视图传递到共享视图_Layout.cshtml?

[英]How to pass value from partial view to shared view _Layout.cshtml in asp.net MVC?

有一个捕获异常的控制器。 我想将错误消息传递给_Layout.cshtml中的通用javascript,以便应用于所有页面。 完全可以确定该值是否通过普通视图从_Layout.cshtml传递,例如@ViewBag =“ error message”; 在视图或ViewBag.ErrorMessage =“错误消息”中; 在控制器中,但无法在部分视图中使用。

为了将字符串消息从局部视图传递到_Layout.cshtml,我应该怎么做?

不确定您要做什么。 但是您可以在局部视图中放置一个脚本块,该脚本块一旦呈现就运行全局javascript函数,其中可能包含消息或其他数据。

例如,在_Layout中,您有:

<script>
    function ShowError(message) {
        alert(message);
    }
</script>

然后在您的部分中,您有:

<script>
 // check for existence of error and if so
 ShowError(ErrorMessage);
</script>

如果要在同一请求期间将数据从局部视图传递到其布局,则可以通过ViewBag对象这样做:

部分视图文件

@{
ViewBag.ErrorMessage = "error message";
}

_布局文件

@if (ViewBag.ErrorMessage != null)
{
    <script>
    alert(@ViewBag.ErrorMessage);
    </script>
}

如果要在控制器的操作中捕获异常,然后在重定向时传递错误消息,则可以使用TempDataTempData

控制者

public ActionResult SomeAction(){
...
try{
  ....
}catch(Exception e){
  TempData["errorMessage"] = e.Message;
  return RedirectToAction("MaybeSomeOtherAction");
}
...
}

_layout文件用于“ MaybeSomeOtherAction”

@if (TempData["errorMessage"] != null)
{
    <script>
    alert(@TempData["errorMessage"]);
    </script>
}

为错误设置通用属性;

 public static class Common
    {
        public static bool ERROR {get;set;}
    }

如果抛出异常或显示错误消息,则将此属性设置为true;否则,将其设置为true。

try
{
   //Any Code
}
catch(Exception)
{
   Common.ERROR = true;
   return PartialView("_PartialView");

}

在_Layou文件,视图或_Partial视图中,可以在Document.Ready检查此属性,如果该属性为true,则可以显示错误警报。

$(function(){               
         if(@Html.Raw(Json.Encode(@HelloWorldMvcApp.Common.ERROR)))
         {
                alert("error message");
                    return;
        }
})


演示此属性是否为True

演示是否为False或其值未设置为true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM