无法从视图返回视图模型,模型属性返回正常

时间:2016-03-04 15:10:42

标签: asp.net-mvc

我是网络编程和MVC的新手。我已经搜索了2天,但无法解决这个问题。

  • 如果我尝试返回模型类的集合。在里面 控制器我收到一个空集合。
  • 如果我尝试返回模型的一个实例,我会收到null 控制器。
  • 如果我尝试从模型中返回一个属性,那么一切都可以 预期。

理想情况下,我想返回当前的“项目”

我的模特

public class Images
{
    private string name; 
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

控制器不起作用

public void Commit(Images inI)
{
    Debug.WriteLine((inI == null).ToString());
}

控制器可以正常工作

public void Commit(string Name)
{
    Debug.WriteLine(Name);
}

查看

@model IEnumerable<testweb.Models.Images>
....
@using (Html.BeginForm("Commit", "Images", FormMethod.Post))
{
    <table class="table">
         @foreach (var item in Model)
         {
            <tr>
               <td>@Html.DisplayFor(modelItem => item.Name)</td>
               // Does Not work
               <td>@Html.ActionLink("Commit", "Commit", new { inI = item })</td>
               // Does as expected
               <td>@Html.ActionLink("Commit", "Commit", new { Name = item.Name })</td>
            </tr>
        }
    </table>
}

1 个答案:

答案 0 :(得分:0)

如果要根据模型属性生成网址,则使用

init

因为@Html.ActionLink("Commit", "Commit", item) 已经是一个对象。请注意,帮助程序使用模型中每个属性的item方法生成路径/查询字符串值,因此仅当模型包含.ToString()和值类型属性(string时才有效,int等。如果模型的任何属性是复杂对象或集合,则绑定将失败,因为它将生成(例如)bool。如果模型包含许多属性,或者属性的值是长字符串,则还需要谨慎使用它,因为您可能超出查询字符串限制并抛出异常。