2016-03-04 159 views
1

我是網絡編程和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> 
} 

回答

0

如果你想基於一個模型性能的網址,然後使用是

@Html.ActionLink("Commit", "Commit", item) 

因爲item已經是一個對象。請注意,幫助程序通過使用模型中每個屬性的.ToString()方法生成路由/查詢字符串值,所以這隻適用於如果您的模型包含string和值類型屬性(int,bool等)。如果模型的任何屬性都是複雜對象或集合,則綁定將失敗,因爲它會生成(比如說)...&someCollection=System.Collections.Generic[someModel]。如果模型包含很多屬性,或者屬性的值是長字符串,則還需要謹慎,因爲您可能會超出查詢字符串限制並引發異常。