Asp.net mvc在一个动作链接中传递模型中的模型

本文关键字:模型 链接 一个 mvc net Asp | 更新日期: 2023-09-27 18:19:24

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

这是我的模型

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;

Asp.net mvc在一个动作链接中传递模型中的模型

您正在使用的ActionLink过载正在等待路由值。根据您的操作期望,像这样的操作应该可以工作:

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

这是假设你的Add动作期待一个字符串url。

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