none
Модель для отображения и модель для просмотра в одном View RRS feed

  • Вопрос

  • 
    
        public class Comments
        {
            public int CommentsID { get; set; }
            public string CommentText { get; set; }
            public DateTime CommentDate { get; set; }
            public string NickName { get; set; }
            public bool DeletedLabel { get; set; }
            public int ProductID { get; set; }
            public virtual Product Product { get; set; }
        }
      public class Product
        {  
            [Key]
            public int ProductID { get; set; }
            public string Name { get; set; }
            public string Describe { get; set; }
            public int CategoryID { get; set; }
            public decimal Price { get; set; }
            public double Weight { get; set; }
            public byte[] ImageMain { get; set; }
            public int ImageID { get; set; }
            [ForeignKey("ImageID")]
            public virtual Image Image { get; set; }
            public int VideoID { get; set; }
            [ForeignKey("VideoID")]
            public virtual Video Video { get; set; }
            public virtual IEnumerable<Comments> Comments { get; set; }
            public virtual IEnumerable<Transaction> Transaction { get; set; }
            public virtual IEnumerable<Category> Category { get; set; }
        }

    Специфицированная модель у меня используется для отображения продуктов из Product, однако мне надо ещё модель Comment для использования в DisplayFor<> и EditorFor<> для отображения полей редактирования

    То есть вот такой код прокатывает

    @{
        ViewBag.Title = "Describe";
        Layout = "~/Views/Shared/_LayoutPageMain.cshtml";
    }
    
    <h2>Describe</h2>
    @model NEW_project_18_02_2013.Models.Product
    
    <div><img style="border-radius:5px 5px" src="@Url.Action("GetImage","Home",new{id=Model.ProductID})" alt="" /></div>
    <div>@Html.DisplayFor(mod => mod.Name)</div>
    <div>@Html.DisplayFor(mod => mod.Describe)</div>

    а код @Html.EditorFor(mod => mod.Comments.CommentText ) уже не прокатывает, как сделать чтобы отоброжалось нужное поле?


    • Изменено Sm1le291 1 марта 2013 г. 12:51
    1 марта 2013 г. 12:49

Ответы

  • Сделай PartialView для модели комментария 

    а в основном View'е 

    @foreach(var comment in Model.Comments)
    {
       @Html.Partial("CommentEdit",comment)
    }

    в PartialView'е комментария делай форму для его редактирования с отдельным сабмитом, и в контроллере делай метод для сохранения изменений комментария.

    Чтобы всё скопом сохраняло посложнее...

    • Помечено в качестве ответа Sm1le291 1 марта 2013 г. 13:29
    1 марта 2013 г. 13:20

Все ответы

  • Сделай PartialView для модели комментария 

    а в основном View'е 

    @foreach(var comment in Model.Comments)
    {
       @Html.Partial("CommentEdit",comment)
    }

    в PartialView'е комментария делай форму для его редактирования с отдельным сабмитом, и в контроллере делай метод для сохранения изменений комментария.

    Чтобы всё скопом сохраняло посложнее...

    • Помечено в качестве ответа Sm1le291 1 марта 2013 г. 13:29
    1 марта 2013 г. 13:20
  • Спасибо, решил проблему по своему, сделал html <label> и присвоил им name по имени модели и поля, а потом принял в контроллере.

    Но как я понял твой вариант более соответствует подходу MVC, так что попробую переделать)

    1 марта 2013 г. 13:29