Типизированный View(MVC)

Esofter
Дата: 29.06.2010 13:12:09
В мвц можно создавать типизированные представления. Мне надо чтобы на странице был список некоторых однотипных данных, и форма для добавления нового объекта.
Если бы была только возможность добавления, решалось бы так:
Пишем модель, например такую
public class SomeObj
    {
        public double field1 { get; set; }
        public double field2 { get; set; }
    }

На странице представления делаем поля для ввода с id=field1,field2.
А вот как быть с списком?
Думаю может сделать класс модели наследником списка.

public class ListObj:List<SomeObj>
    {
          SomeObj currObj;
    }


В нем хранить список всех объектов, а в поле currObj объект, который необходимо добавить.
Но как это сделать что-то не могу придумать. Кто сталкивался с подобной задачей?
vx_user
Дата: 29.06.2010 13:22:21
Esofter,
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Model>>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="phContent" runat="server">
  <% if (Model != null) { %>	
		<% foreach (var item in Model) { %>
		   ..................
		<% } %>
	<% } %>
	<!-- Форма добавления -->
<% Html.RenderPartial("~/Views/Shared/Forms/Add.ascx" }); %>
</asp:Content>
это?
Esofter
Дата: 29.06.2010 13:28:27
vx_user
Esofter,
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Model>>" %>
<asp:Content ID="Content2" ContentPlaceHolderID="phContent" runat="server">
  <% if (Model != null) { %>	
		<% foreach (var item in Model) { %>
		   ..................
		<% } %>
	<% } %>
	<!-- Форма добавления -->
<% Html.RenderPartial("~/Views/Shared/Forms/Add.ascx" }); %>
</asp:Content>
это?


Что-то типа того. Допустим я так сделаю, как мне теперь обработать возврат формы

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Places(ListObj houses)
        {
        }

Где введенные данные будут? houses - список объектов
vx_user
Дата: 29.06.2010 13:36:19
Esofter,
[HttpPost]
public ActionResult Places(ListObj houses)
{
     //Здесь что-то делаем
     
    //Возврат
    return RedirectToAction(...); // или return View();
}

как-то так
Esofter
Дата: 29.06.2010 13:38:04
vx_user,

Ну а где данные из формы будут?
vx_user
Дата: 29.06.2010 13:42:14
Esofter
Ну а где данные из формы будут?


Так ведь Вы же их вместе с моделью и передали...
Если такое восприятие непривычно, попробуйте так:
[HttpPost]
public ActionResult Create(FormCollection form)
{
}

В form, соответственно то, что пришло из формы.
Или я не понимаю смысла вопроса(:
Esofter
Дата: 29.06.2010 13:47:09
vx_user,

То есть имея класс


public class ListObj:List<SomeObj>
    {
           string a;
           string b;
    }

и хтмл форму
<form>
<input type="text" id="a" />
<input type="text" id="b" />
</form>

При обработке запроса
[HttpPost]
public ActionResult Places(ListObj houses)
{
    //так я могу взять?
    string somestr = houses.a;
    return View();
}


vx_user
Дата: 29.06.2010 13:50:46
Esofter,

Так - нет. Вот так можно:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ListObj>" %>

<% using (Html.BeginForm("Create", "", FormMethod.Post)) {%>
    <%= Html.TextAreaFor(item => item.a)%>
<% } %>
vx_user
Дата: 29.06.2010 13:51:59
Этот код должен находиться в файле Add. ascx
Esofter
Дата: 29.06.2010 13:55:58
vx_user,
Все равно не пойму как введенные данные обработать.
Или после отправки формы создастся новый объект и добавится в коллекцию?