有一个控制器可以捕获异常。我想将错误消息传递给_Layout.cshtml中的通用javascript,以便应用于所有页面。完全找到该值是否从普通视图传递到_Layout.cshtml,例如, @ViewBag =“错误消息”;在视图或ViewBag.ErrorMessage =“错误消息”;在控制器中,但它在局部视图中不起作用。
如何将字符串消息从局部视图传递给_Layout.cshtml?
答案 0 :(得分:0)
不确定您要做什么。但是你可以在部分视图中放置一个脚本块,它在渲染后运行全局javascript函数,可能包含一条消息或其他数据。
例如在_Layout中你有:
<script>
function ShowError(message) {
alert(message);
}
</script>
然后在你的部分你有:
<script>
// check for existence of error and if so
ShowError(ErrorMessage);
</script>
答案 1 :(得分:0)
如果要在同一请求期间将数据从局部视图传递到其布局,可以通过ViewBag
对象执行此操作:
部分视图文件
@{
ViewBag.ErrorMessage = "error message";
}
_layout file
@if (ViewBag.ErrorMessage != null)
{
<script>
alert(@ViewBag.ErrorMessage);
</script>
}
如果您想在控制器的操作中捕获异常,然后在重定向上传递错误消息,则可以使用TempData
执行此操作:
控制器
public ActionResult SomeAction(){
...
try{
....
}catch(Exception e){
TempData["errorMessage"] = e.Message;
return RedirectToAction("MaybeSomeOtherAction");
}
...
}
“MaybeSomeOtherAction”的
@if (TempData["errorMessage"] != null)
{
<script>
alert(@TempData["errorMessage"]);
</script>
}
答案 2 :(得分:0)
为错误制作公共属性;
public static class Common
{
public static bool ERROR {get;set;}
}
如果抛出异常或显示错误消息,请将此属性设置为true;
try
{
//Any Code
}
catch(Exception)
{
Common.ERROR = true;
return PartialView("_PartialView");
}
在您的_Layou文件,视图或_Partial View中,您可以在Document.Ready
检查此属性,如果是,则可以显示错误提醒。
$(function(){
if(@Html.Raw(Json.Encode(@HelloWorldMvcApp.Common.ERROR)))
{
alert("error message");
return;
}
})