私はのアプリケーションをSweetAlert 2 pluginで開発しています。ViewBagに基づくモーダルエラーメッセージを表示するためのPartialView
私の目標:私のアプリのどこにでもエラーが発生したときは、タイトル/メッセージ付きの(集中、sweetalert)モーダルダイアログを表示したいと思います。
「_ModalError」というPartialViewを作成し、メインの共有「_Layout」ビューの一番下にこれを参照しました。基本的に、この部分的な表示はすべてのページで有効になります。
私はその後、...
namespace MyApp.Models
{
public class MyError
{
public string ErrorTitle { get; set; }
public string ErrorMessage { get; set; }
}
}
をシンプルErrorクラスを作成した私は、私はエラーを取得するたびに、私はその後、設定、適切なErrorTitleとにErrorMessageプロパティを設定し、新しいMyErrorオブジェクトをインスタンス化だろう、ということを考えていましたViewBag.ErrorこのMyErrorオブジェクト。
private MyError err = new MyError();
err.ErrorMessage = "Your information was not valid. Please re-check everything.";
err.ErrorTitle = "Error!";
ViewBag.Error = err;
次に、JavaScriptでは、いつでも_ModalError(ページ)負荷が、それはViewBag.Errorが存在するかどうかになります。もしそうなら、エラーが発生したので、それを表示してください。ここでの問題は、私がしようとしている
...それはviewbagコードを打つときに、ページが最初にロードが、私はこのエラーを取得するときにすることをCannot perform runtime binding on a null reference.
です....私がこれまで持っているもの
<script>
$(function() {
if (@ViewBag.Error != null) {
swal(
@ViewBag.Error.ErrorTitle,
@ViewBag.Error.ErrorMessage,
'error'
);
};
</script>
ですViewBag
にアクセスすることはできますが、最初は存在しないようですが、これは意味があります。しかし、それがヌルかどうかを確認することは実際には機能していません。なぜこれが分かっていますか?助言がありますか?これは欠陥のある、クレイジーな、または過剰殺しの解決策ですか?
********
********ソリューションはここソリューションです。 Json.EncodeアドバイスのためのStephen Muecke(下記)のおかげで!私はこれが他の誰かに役立つことを願っています!
<script>
$(function() {
var error = @Html.Raw(Json.Encode(ViewBag.Error));
if (error != null) {
swal(
error.ErrorTitle,
error.ErrorMessage,
'error'
);
}
})
http://stackoverflow.com/questions/8640927/checking-to-see-if-viewbag-has-a-property-or-not-to-conditionally-inject-javasc – Igor
あなたは '@ViewBagをラップする必要があります.Error.ErrorTitle'と '@ ViewBag.Error.ErrorMessage'を引用符で囲みます – Igor