我在通过对象链接传递模型时遇到问题
这是我的模特
public class ItemImage
{
[Required,Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[DataType(DataType.ImageUrl)]
public string Url { get; set; }
[Required]
public int Width { get; set; }
[Required]
public int Height { get; set; }
}
public class UserItem
{
public UserItem()
{
Image = new ItemImage();
Private = true;
}
#region
[Required, Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
public string EAN { get; set; }
[Required]
public string Title { get; set; }
[Required]
[DataType(DataType.Date)]
public DateTime AddDate { get; set; }
[Required]
[DataType(DataType.Date)]
public DateTime PublishDate { get; set; }
[Required]
public string Publisher { get; set; }
[Required]
public string Binding { get; set; }
[EnumDataType(typeof(ItemType))]
public ItemType Type { get; set; }
[EnumDataType(typeof(ItemStatus))]
public ItemStatus Status { get; set; }
[Required]
public ItemImage Image { get; set; }
[Required]
public int Quantity { get; set; }
[Required]
public bool Private { get; set; }
#endregion
} // other properties
}
// the view code
@foreach (InventoryApp.Models.UserItem item in Model)
{
<tr>
<td>
@Html.ActionLink("Add To Library", "Add",item)
</td>
</tr>
}
//控制器
[Authorize]
public ActionResult Add(UserItem item)
{
return RedirectToAction("Index");
}
这是url(动作链接)的样子,因为你可以看到我的嵌入式模型对象没有正确传递
Add/0?Image=InventoryApp.Models.ItemImage&
答案 0 :(得分:1)
您正在使用的ActionLink
的重载期望路由值。根据您的行动期望,这样的事情应该有效:
@Html.ActionLink("Add To Library", "Add", new { Url = item.Url })
这假设您的Add
操作需要字符串网址。
另一方面,如果您希望将整个模型传递到该操作,那是不可能的。