Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 虚拟财产不';将模型从视图传递到控制器时,无法填充_C#_Razor_Asp.net Mvc 5_Ef Code First_Entity Framework 6 - Fatal编程技术网

C# 虚拟财产不';将模型从视图传递到控制器时,无法填充

C# 虚拟财产不';将模型从视图传递到控制器时,无法填充,c#,razor,asp.net-mvc-5,ef-code-first,entity-framework-6,C#,Razor,Asp.net Mvc 5,Ef Code First,Entity Framework 6,当我运行程序并在控制器方法中设置断点时,我可以单步执行并查看recipe.Name和recipe.ID是否正确填充,但recipe.components为空 我忽略了什么?这是我的相关代码: 型号: public class Recipe { public int ID { get; set; } public string Name { get; set; } public virtual ICollection<Ingredient> Ingredient

当我运行程序并在控制器方法中设置断点时,我可以单步执行并查看recipe.Name和recipe.ID是否正确填充,但recipe.components为空

我忽略了什么?这是我的相关代码:

型号:

public class Recipe
{
    public int ID { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Ingredient> Ingredients { get; set; }
}

不能使用
@Html.ActionLink()
将包含集合(或复杂对象)属性的模型传递给get方法。在内部,该方法通过对模型中的每个属性调用
.ToString()
方法来生成查询字符串值。在您的情况下,它正在生成

...?ID=someValue&Name=someValue&Ingredients=System.Collections.Generic.ICollection<Ingredient>
相反。将模型的ID传递给方法,然后再次获取模型(就像生成此视图的get方法中所做的那样),以构建xml文件

@Html.ActionLink("Export Data", "ExportData", new { id = Model.ID })

public ActionResult ExportData (int ID)
{
  var recipe = db.Recipies.Where(r => r.ID = ID).FirstOrDefault();
  ....
}

不能将包含复杂对象集合的模型传递给GET方法。我明白了,请查看您的understandAh链接的
href
属性。非常感谢。那么,检索这些数据的最佳实践方法是什么?从我的控制器单独调用数据库以查询我需要的数据?是的,只需将模型的ID传递给
ExportData
方法,然后从存储库中获取所需的数据。好的,很酷。谢谢!完美的谢谢你的帮助。
...?ID=someValue&Name=someValue&Ingredients=System.Collections.Generic.ICollection<Ingredient>
...?....&Ingredients[0].Name=someValue&Ingredients[1].Name=someValue&...
@Html.ActionLink("Export Data", "ExportData", new { id = Model.ID })

public ActionResult ExportData (int ID)
{
  var recipe = db.Recipies.Where(r => r.ID = ID).FirstOrDefault();
  ....
}