Asp.net MVC3 прохождение модели внутри модели в действии ссылка - PullRequest
0 голосов
/ 05 января 2012

У меня проблема с передачей модели через ссылку на объект

Вот моя модель

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 Ответ

1 голос
/ 05 января 2012

Используемая вами перегрузка ActionLink ожидает значения маршрута. В зависимости от того, что ожидает ваше действие, должно сработать что-то подобное:

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

Предполагается, что ваше действие Add ожидает строковый URL.

С другой стороны, если вы ожидаете передачи всей вашей модели в действие, это невозможно.

...