これは「静止時」のコードです。
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) これらの「置換パラメータ」は引用符で囲まれています。
これは完全に「自家栽培、紡績」されたもので、自分自身で解き明かさなければならないものなのか、それとも既知の量のものなのか?