0

オブジェクト リンクを介してモデルを渡す際に問題が発生しています

これが私のモデルです

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;

4

1 に答える 1

1

使用している過負荷はActionLink、ルート値を期待しています。アクションが何を期待しているかに応じて、次のようなものが機能するはずです。

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

Addこれは、アクションが文字列URLを期待していることを前提としています。

一方、モデル全体をアクションに渡すことを期待している場合、それは不可能です。

于 2012-01-05T01:43:37.193 に答える