簡體   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