【问题标题】:Why are my "replacement parameters" getting transformed into empty strings?为什么我的“替换参数”会变成空字符串?
【发布时间】:2013-08-20 23:33:55
【问题描述】:

这是“静止”时的代码:

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

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

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

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

System.NullReferenceException 未被用户代码处理 Message=对象引用未设置为对象的实例。 堆栈跟踪: 在 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 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) 单词“model”大写(“Model”),而上面 Razor 语法中引用的模型不是:

@model TLDReporter.Models.TLDSalesReceiptCriteriaModel

还有!:

1) 那些“替换参数”用引号括起来。

这是我必须自己解开的完全“家[成长,纺]”的东西,还是这种东西是已知数量的东西?

【问题讨论】:

    标签: c# jquery asp.net-mvc silverlight model


    【解决方案1】:

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

    Razor 语法的意思很简单,就是渲染页面模型的属性“Bla”。这一行:

    @model TLDReporter.Models.TLDSalesReceiptCriteriaModel
    

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

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

    【讨论】:

    • 啊,有道理;我一直在处理模型/控制器代码,其中有很多东西被放在那里然后被丢弃(死代码),所以也许我无意中埋下了一些仍在呼吸的代码。
    • 即使在我拥有的最旧版本的 TLDSalesReceiptCriteriaModel 中,也没有 GUID、SerialNumber 或 ReportName 的声明;它们仅在控制器中...
    • @ClayShannon 现在这很奇怪,因为视图显然似乎假设它们是模型的属性......那么它们在控制器中的作用是什么?
    • 我的错,我发现它们像祖先类的蟑螂一样偷偷摸摸。
    • @ClayShannon 哈哈……你对代码库的纯粹蔑视是……生动的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2015-10-26
    • 2023-03-14
    • 1970-01-01
    • 2015-03-11
    相关资源
    最近更新 更多