-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 有三个不同的值..我通过调试检查它..所以这里没有问题。此方法在 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的初学者..请帮助

4

1 回答 1

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);
}

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

于 2013-05-11T18:29:08.270 回答