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