0

これは「静止時」のコードです。

var report_parms = {
    GUID: "@Model.GUID",
    SerialNumber: "@Model.SerialNumber",
    ReportName: "@Model.ReportName"
};

実行時に jQuery をステップ実行すると、次のようになります。

var report_parms = {
    GUID: "",
    SerialNumber: "",
    ReportName: ""
};

...そして、これらの文字列が空であるため、これは私が得る例外です:

System.NullReferenceException はユーザー コードによって処理されませんでした Message=Object reference not set to an object . StackTrace: TLDReporter_SL.App.Application_Startup(オブジェクト送信者、StartupEventArgs e) で MS.Internal.CoreInvokeHandler.InvokeEventHandler(UInt32 typeIndex、デリゲート handlerDelegate、オブジェクト送信者、オブジェクト引数) で MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs) 、Int32 argsTypeIndex、Int32 actualArgsTypeIndex、String eventName、UInt32 フラグ)

...この C# メソッドでは:

   private void Application_Startup(object sender, StartupEventArgs e)
    {
        ScriptObject Parms = (ScriptObject)HtmlPage.Window.Invoke("get_report_parms");
        string ReportName = Parms.GetProperty("ReportName").ToString(); <--- This is the line that blows up
        switch (ReportName)
        {
            default:
                this.RootVisual = new ReceiptRpt();
                break;
        }
    }

だから私の質問は(これは私が理解しようとしているレガシーコードです):その「@Model.Bla」は何をすべきですか?この種の「魔法」に詳しい人はいますか?私には奇妙に思えます:

0) 「モデル」という単語は大文字 (「モデル」) ですが、上記の Razor 構文で参照されているモデルは次のとおりではありません。

@model TLDReporter.Models.TLDSalesReceiptCriteriaModel

と!:

1) これらの「置換パラメータ」は引用符で囲まれています。

これは完全に「自家栽培、紡績」されたもので、自分自身で解き明かさなければならないものなのか、それとも既知の量のものなのか?

4

1 に答える 1

1

その「@Model.Bla」は何をするはずですか?

この Razor 構文は、ページ モデルのプロパティ "Bla" を単純にレンダリングすることを意味します。この行:

@model TLDReporter.Models.TLDSalesReceiptCriteriaModel

ページ モデルのタイプを示します。そのクラスのインスタンスがどのように返されているか (または返されていないか) を正確に把握するには、コントローラー コードを見つける必要があります。「ActionResult」などを返すメソッドを持つ「XyzController」のようなクラスを見つけることができるはずです。これには、次のようなものがあります。

var model = new TLDReporter.Models.TLDSalesReceiptCriteriaModel();
return View(model);
于 2013-08-20T23:46:17.087 に答える