Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / asp.net mvc @model / 2 сообщений из 2, страница 1 из 1
22.07.2014, 18:14
    #38703229
Che0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asp.net mvc @model
Добрый день.
Есть задача сделать на одной страницу таблицу объектов и форму добавление нового. Как новичок в asp.net столкнулся с проблемой нескольких моделей в одной вью.

я уже изучил два пути решение viewBag и complex model, вопрос в другом

Получается один тип данных
Код: c#
1.
IEnumerable<Guestbook.Models.DataModel.Review>


тут используется объект с данными которые и отображаются в таблицу

Второй
Код: c#
1.
Guestbook.Models.DataModel.Review


Используется только для формы отправки данных во вью не передается никаких, и я предполагаю что объект не создается.
Если я прав то можно ли просто использовать внешний тип данных, в данном случае DataModel.Review для формирования формы отправки? что то типа этого:



Код: plaintext
1.
2.
  @Html.EditorFor(Review=> Review.UserName)
                @Html.ValidationMessageFor(Review=> Review.UserName)
...
Рейтинг: 0 / 0
22.07.2014, 23:28
    #38703386
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
asp.net mvc @model
Che0,

Вью №1 (List.cshtm):

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@model IEnumerable<Guestbook.Models.DataModel.Review>

<table>
...
... рендеринг таблицы
...
</table>

<div id="addReview">
   @Html.Action("Add")
</div>



Вью №2 (Add.cshtml):

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@model Guestbook.Models.DataModel.Review

@using(Html.BeginForm("Add", "Reviews", FormMethod.Post))
{

<div class="editor-label">
   @Html.LabelFor(x => x.UserName)
</div>
<div class="editor-field">
   @Html.EditorFor(x=> x.UserName)
   @Html.ValidationMessageFor(x=> x.UserName)
</div>

...

<button type="submit">
   Сохранить
</button>

}



Контроллер:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
public class ReviewController
{
   public ActionResult List()
   {
       var list = Repo.GetReviewList();
       var model = MapTo<Guestbook.Models.DataModel.Review>(list);
       return View(model);
   }

   [HttpGet]
   public ActionResult Add()
   {
       return PartialView(new Guestbook.Models.DataModel.Review());
   }

   [HttpPost]
   public ActionResult Add(Guestbook.Models.DataModel.Review model)
   {
       if(ModelState.IsValid)
       {
           var dto = MapTo<ReviewDto>(model);
           try 
           {
               Repo.AddReview(dto);
               Uow.Save();
           }
           catch(Exception ex)
           {
               ModelState.AddModelError("", ex.Message);
           }
       }
       return PartialView(model);
   }
}



В общем случае можно с помощью скрипта найти на странице элемент с id="addReview" и заставить форму выполняться асинхронно ( http://malsup.com/jquery/form/ ), но и с постбеками работать тоже будет.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / asp.net mvc @model / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]