0

这是“休息”时的代码:

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

这是在运行时单步执行 jQuery 时的样子:

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

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

System.NullReferenceException 未被用户代码处理 Message=Object 引用未设置为对象的实例。StackTrace:在 TLDReporter_SL.App.Application_Startup(Object sender, 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 flags)

...在这个 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

表示页面模型的类型。您必须找到控制器代码才能准确确定该类的实例是如何返回(或不返回)的。你应该能够找到一个像“XyzController”这样的类,它的方法返回“ActionResult”或类似的,它有这样的东西:

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