2015-07-10 127 views
0

我有这个类:如何初始化模型中的值?

public class TicketPayoutModel 
{ 

    public string Logo { get; set; }  
} 
在MainModel

我有这样的:

public TicketPayoutModel TicketPayOut { get; set; } 

我这样做:

TicketPayOut = new TicketPayoutModel(); 
TicketPayOut.Logo = "test"; 

,当我尝试鉴于这样来调用这个: @Model.TicketPayOut.Logo我得到一个null。我不确定我做错了什么?任何建议?

编辑:这是我的控制器:

public ActionResult PayOutConfirmation() 
    { 
    return View(new TicketPayOutModel()); 
    } 
+0

你也可以说初始化'TicketPayOut'控制器动作 -

与像这样修改你的控制器的方法?如何调用'返回View()'?你的'TicketPayoutModel'类中的 –

+1

,你需要一个构造函数。添加'公共TicketPayoutModel(){this.Logo =“”; }在课堂结束括号之前。 'this.Logo =“”;'部分是可选的。 – scgough

+0

@JasonEvans我张贴我的控制器 – None

回答

0

您可以初始化内部模型的构造你的价值。

public class TicketPayoutModel 
{ 
    public TicketPayoutModel() 
    { 
     this.Logo = string.Empty; 
    } 

    public string Logo { get; set; }  
} 

或者使用新的C#6变种:

public class TicketPayoutModel 
{ 
    public TicketPayoutModel(string logo) 
    { 
     this.Logo = logo; 
    } 

    public string Logo { get; set; }  
} 

public ActionResult PayOutConfirmation() 
{ 
    return View(new TicketPayOutModel("logo.png")); 
} 
+0

是否可以避免在控制器中初始化?我在课堂上做了这样的事情:TicketPayOut = new PayOutTicketModel(“〜/ Content/img/logo.png”); – None

+0

@实际上你并没有试图在你的View文件中获得价值 - 像这样@ Model.Someproperty.SomeSubProperty--这个引用试图调用你放入你的控制器的对象 - this.View(new ModelClass())。正如我看到你的问题有关模型类和模型属性有点混淆。你能否提供你的模型的完整代码?然后,我将能够帮助您与您的控制器。 ;) –

0

@ Model.Logo不@ Model.TicketPayOut.Logo

public class TicketPayoutModel 
{ 
    public string Logo { get; set; } = string.Empty;  
} 

您也可以通过构造函数的参数初始化你的价值

而要测试,您可以只需 return View(new TicketPayOutModel {Logo =“foo”});

0

看着你的控制器,你正在传递一个新的TicketPayOutModel实例到你的视图中,这个logo属性没有初始化,所以它会给null

public ActionResult PayOutConfirmation() 
    { 
    var ticketPayOutModel = new TicketPayoutModel(); 
    ticketPayOutModel .Logo = "test"; 
    return View(ticketPayOutModel); 
    }