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

时间:2013-08-20 23:33:56

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

这是“休息时”的代码:

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,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)单词“model”大写(“Model”),而上面Razor语法中引用的模型不是:

@model TLDReporter.Models.TLDSalesReceiptCriteriaModel

和:

1)这些“替换参数”包含在引号中。

这是完全“家庭[成长,旋转]”的东西,我将不得不解开自己,或者这是一件众所周知的事情?

1 个答案:

答案 0 :(得分:1)

  

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

Razor语法意味着简单地渲染页面模型的属性“Bla”。这一行:

@model TLDReporter.Models.TLDSalesReceiptCriteriaModel

表示页面模型的类型。您必须找到控制器代码以确切地确定如何返回该类的实例(或不返回)。您应该能够使用返回“ActionResult”或类似方法的方法找到类似“XyzController”的类,其类似于:

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