我有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有三个不同的值..我通过调试来检查..所以这里没有roblem。这个方法属于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很初学..请帮忙
答案 0 :(得分: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);
}
当然,这假设您不依赖于通过路由参数传入的数据。如果你是,你需要检查为什么值没有被传入,但我猜你首先不需要它作为参数。