powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Таблица + поля для ввода
11 сообщений из 11, страница 1 из 1
Таблица + поля для ввода
    #38486555
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сделать таблицу с полями для ввода. Таблица должна обновляться по нажатию кнопки submit. Как сделать вью и контроллер, обязательно ли использовать ajax ?
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38487220
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kim-kong,

для начала открыть вижуалстудию.
аякс использовать необязательно.
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38487226
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kim-kong,

таблица делается с помощью <table>

поля делаются с помощью <input>

контроллер делается с помощью public class MyController: Controller

ajax обязательно применяется, если надо выполнить запрос без обновления страницы.

что ещё вас интересует?
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38488266
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Забыл прицепить код
Я хочу, чтобы grid (или list) и create были на одной странице. Для этого сделал новую модель:

Код: c#
1.
2.
3.
4.
5.
6.
    public class EnzoViewModel
    {
        public Product Product { get; set; }
        public IngList IngList { get; set; }
        public IEnumerable<Ingredient> Ingredient { get; set; } 
    }



Контроллер + вью

Код: 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.
        public ActionResult IngList()
        {
            ViewBag.IngId = new SelectList(db.Ingredients, "Id", "Name");
            ViewBag.ProdId = new SelectList(db.Products, "Id", "Name");
            var viewModel =
                (from il in db.IngLists
                 join p in db.Products on il.ProdId equals p.Id
                 join ing in db.Ingredients on il.IngId equals ing.Id
                 where (il.ProdId == p.Id) && (il.IngId == ing.Id)
                 select new IngListModel { ProdName = p.Name, IngName = ing.Name, Amount = il.Amount }).ToList();
            return View(viewModel);
        }

        [HttpPost]
        public ActionResult IngList(IngList inglist)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.IngLists.Add(inglist);
                    db.SaveChanges();
                    return RedirectToAction("IngList");
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(String.Empty, ex);
            }
            return View(inglist);
        }



Код: html
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
@model EnzoApp.Models.IngListModel

@{
    ViewBag.Title = "IngList";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>IngList</h2>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <legend>Добавить новый заказ</legend>
        <br>
        <div class="editor-label">
            <b>Клиент</b>
        </div>
        <div class="editor-field">
            @Html.DropDownList("ProdId", (IEnumerable<SelectListItem>) ViewBag.ProdId, "--Выберите рецептуру--")
            @Html.ValidationMessageFor(model => model.ProdName)
        </div>

        <div class="editor-label">
            <b>Дата отгрузки</b>
        </div>
        <div class="editor-field">
            @Html.DropDownList("IngId", (IEnumerable<SelectListItem>) ViewBag.IngId, "--Выберите ингредиент--")
            @Html.ValidationMessageFor(model => model.IngName)
        </div>

        <div class="editor-label">
            <b>Артикул</b>
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Amount)
            @Html.ValidationMessageFor(model => model.Amount)
        </div>

        <p>
            <input type="submit" value="Добавить" />
        </p>
    </fieldset>
}

@{
    var grid = new WebGrid(
        Model,rowsPerPage:10,
        defaultSort:"ProdName",
        columnNames:new [] {"ProdName", "IngName", "Amount"}
        );
}

@grid.GetHtml(

fillEmptyRows:false,
mode:WebGridPagerModes.All,

columns:grid.Columns
(
grid.Column("ProdName", header:"Наименование", format: @<text>@Html.ActionLink((string)item.Name, "IngredientDetails", new { id = item.Id }, new { @class = "btn btn-success" })</text>),
grid.Column("IngName", header:"Ингредиент"),
grid.Column("Amount", header:"Кг")
)
)


<div>
    @Html.ActionLink("Назад", "Orders")
</div>



Ошибки:

Наиболее подходящий перегруженный метод для "System.Web.Helpers.WebGrid.WebGrid(System.Collections.Generic.IEnumerable<dynamic>, System.Collections.Generic.IEnumerable<string>, string, int, bool, bool, string, string, string, string, string, string, string)" имеет несколько недопустимых аргументов

Ошибка 2 Аргумент "1": преобразование типа из "EnzoApp.Models.IngListModel" в "System.Collections.Generic.IEnumerable<dynamic>" невозможно
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38488415
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то я не вижу класса EnzoApp.Models.IngListModel
может он действительно не является IEnumerable
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38489138
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

Код: c#
1.
2.
3.
4.
5.
6.
    public class IngListModel
    {
        public string ProdName { get; set; }
        public string IngName { get; set; }
        public int Amount { get; set; }
    }



Почему он должен быть Ienumerable ?
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38489149
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38489190
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

До этого делал вот так и все работает

Код: c#
1.
2.
3.
4.
5.
6.
7.
    class ModelList
    {
        public int Id { get; set; }
        public string ClientName { get; set; }
        public string ShipDate { get; set; }
        public string Article { get; set; }
    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
        public ActionResult Orders()
        {
            var viewModel =
                (from pd in db.Orders
                 join p in db.Clients on pd.ClientId equals p.Id
                 where pd.ClientId == p.Id
                 select new ModelList { Id = pd.Id, ClientName = p.Name, ShipDate = pd.ShipDate, Article = pd.Article }).ToList();
            return View(viewModel);
        }



Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
@{
    var grid = new WebGrid(
        Model,rowsPerPage:10,
        defaultSort:"ClientName",
        columnNames:new [] {"ClientName", "ShipDate", "Article"}
        );
}

@grid.GetHtml(

fillEmptyRows:false,
mode:WebGridPagerModes.All,

columns:grid.Columns
(
grid.Column("ClientName", header:"Клиент", format: @<text>@Html.ActionLink((string)item.ClientName, "OrderDetails", new { id = item.Id }, new { @class = "btn btn-success" })</text>),
grid.Column("ShipDate", header:"Дата"),
grid.Column("Article", header:"Артикул")
)
)
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38489240
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что ToList()
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38489304
kim-kong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

И в том и в другом случае в IngListModel и ModelList .ToList()
...
Рейтинг: 0 / 0
Таблица + поля для ввода
    #38489330
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поставьте точку останова и посмотрите что Вы передаете во View в первом и втором случае
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Таблица + поля для ввода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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