Asp.net MVC3在动作链接中传递模型内的模型

时间:2012-01-05 00:58:25

标签: c# asp.net-mvc url-parameters

我在通过对象链接传递模型时遇到问题

这是我的模特

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&amp;

1 个答案:

答案 0 :(得分:1)

您正在使用的ActionLink的重载期望路由值。根据您的行动期望,这样的事情应该有效:

@Html.ActionLink("Add To Library", "Add", new { Url = item.Url })

这假设您的Add操作需要字符串网址。

另一方面,如果您希望将整个模型传递到该操作,那是不可能的。