2013-05-11 151 views
-1

我有3个模型: 第一之一:未将对象引用设置为对象的实例。

public class CreateFieldModel 
{ 

     public FieldModel fm { get; set; } 
     public CategoryModel cm { get; set; } 
} 

第二之一:

public class FieldModel 
    { 
     public string field_Name { get; set; } 
     public InputTypeModel itm { get; set; } 
     public string input1 { get; set; } 
     public string input2 { get; set; } 
     public string input3 { get; set; } 
     public string input4 { get; set; } 

     public List<InputTypeModel> inputs { get; set; } 
    } 

第三一:

public class InputTypeModel 
    { 
     public string inputTypeName { get; set; } 
     public string inputTypeDesc { get; set; } 

    } 

2种方法:

第一一:

public List<InputTypeModel> getInputTypes() 
     { 
      var inptypes = edu.InputTypes; 

      List<InputTypeModel> listInputTypes = new List<InputTypeModel>(); 
      foreach (var inpType in inptypes) 
      { 
       listInputTypes.Add(new InputTypeModel { inputTypeName = inpType.Input_Type_Name, inputTypeDesc = inpType.Input_Type_Description }); 
      } 

      return listInputTypes; 
     } 

当这个方法执行时,listInputTypes有三个不同的值..我通过调试来检查它..所以这里没有任何可能。这methos是类FormManagement下..我打电话从下面的操作方法,这个方法:

[HttpGet] 
    public ActionResult createNewField(CreateFieldModel cfm, string fcode) 
    { 
     FormManagement ffm = new FormManagement(); 
     cfm.fm.inputs = ffm.getInputTypes(); 
     return View(cfm); 

    } 

cfm.fm.inputs = ffm.getInputTypes();执行它显示“未将对象引用设置到对象的实例。”消息...我很初学mvc ..请帮助

+2

当你调用createNewField时,你的cfm很可能是null。使用调试器。在这一行上设置一个断点。查看您的调用堆栈并检查调用函数是否为cfm提供了正确的值。 – 2013-05-11 08:45:31

+0

是的,它是空的...我怎么解决它? – jubair 2013-05-11 08:54:10

+0

那么你为什么*期望*它是非空的? – 2013-05-11 09:01:13

回答

0

不知道你真的想在cfm-parameter中实现你想要实现的功能,我唯一能建议的是检查空引用并创建新实例在你分配它们之前:

[HttpGet] 
public ActionResult createNewField(CreateFieldModel cfm, string fcode) 
{ 
    FormManagement ffm = new FormManagement(); 
    if (cfm == null) 
    { 
     cfm = new CreateFieldModel(); 
    } 
    if (cfm.fm == null) 
    { 
     cfm.fm = new FieldModel(); 
    } 
    cfm.fm.inputs = ffm.getInputTypes(); 
    return View(cfm); 
} 

当然,这假设你不依赖传入的数据通过你的路由参数。如果你是,你需要检查为什么值没有被传入,但我猜你并不需要它作为参数。

+0

感谢您的帮助 – jubair 2013-05-12 13:49:53

相关问题