为什么我的“;替换参数”;变成空字符串

本文关键字:字符串 参数 我的 替换 为什么 | 更新日期: 2023-09-27 18:28:21

这是"静止"时的代码:

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

这就是它在运行时的样子,当遍历jQuery:时

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

这是我得到的例外,因为那些字符串是空的:

用户代码未处理System.NullReferenceExceptionMessage=对象引用未设置为对象的实例。StackTrace:位于TLDReporter_SL.App.Application_Startup(对象发送器,StartupEventArgs e)位于MS.Internal.CoreInvokeHandler.InvokeEventHandler(UInt32 typeIndex,Delegate handlerDelegate,Object sender,Object args)位于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)单词"model"是大写的("model"),而上面Razor语法中引用的模型不是:

@model TLDReporter.Models.TLDSalesReceiptCriteriaModel

而且!:

1) 这些"替换参数"用引号括起来。

这是我必须自己解开的完全"土生土长的、旋转的"东西,还是某种已知数量的东西?

为什么我的“;替换参数”;变成空字符串

"@Model.Bla"的东西应该做什么?

Razor语法的意思很简单,就是呈现页面模型的属性"Bla"。此行:

@model TLDReporter.Models.TLDSalesReceiptCriteriaModel

指示页面模型的类型。您必须找到控制器代码,才能准确地了解该类的实例是如何返回的(或是否返回)。您应该能够找到一个类似于"XyzController"的类,该类的方法返回"ActionResult"或类似的方法,其内容如下:

var model = new TLDReporter.Models.TLDSalesReceiptCriteriaModel();
return View(model);