powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET with KENDO UI
25 сообщений из 29, страница 1 из 2
ASP.NET with KENDO UI
    #38738288
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу помощи в написании модели для взаимодействия контроллера с представлением.
Имеется база на MS SQL. Для взаимодействия данных из базы и кода C# используется Entity Framework (6).
Не получается сделать так, чтобы в главной таблице Streets отображались данные из таблиц Rajons, Cities и StreetTypeList, связанные по соответствующим ID, а не сами значения ID, по которым связывается исходная таблица.

{
using System;
using System.Collections.Generic;

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 public partial class Street
    {
        public Street()
        {
            this.Abonents = new HashSet<Abonent>();
            this.Houses = new HashSet<House>();
        }
    
        public int StreetID { get; set; }
        public string StreetName { get; set; }
        public Nullable<int> CityID { get; set; }
        public Nullable<int> RajonID { get; set; }
        public Nullable<int> StreetTypeID { get; set; }
    
        public virtual ICollection<Abonent> Abonents { get; set; }
        public virtual City City { get; set; }
        public virtual ICollection<House> Houses { get; set; }
        public virtual Rajon Rajon { get; set; }
        public virtual StreetsTypeList StreetsTypeList { get; set; }
    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public partial class Rajon
    {
        public Rajon()
        {
            this.Streets = new HashSet<Street>();
        }
    
        public int RajonID { get; set; }
        public string RajonName { get; set; }
    
        public virtual ICollection<Street> Streets { get; set; }
    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public partial class StreetsTypeList
    {
        public StreetsTypeList()
        {
            this.Streets = new HashSet<Street>();
        }
    
        public int StreetTypeID { get; set; }
        public string StreetTypeName { get; set; }
        public string StreetTypeNameFull { get; set; }
    
        public virtual ICollection<Street> Streets { get; set; }
    }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public partial class City
    {
        public City()
        {
            this.Abonents = new HashSet<Abonent>();
            this.Streets = new HashSet<Street>();
        }
    
        public int CityID { get; set; }
        public string CityName { get; set; }
    
        public virtual ICollection<Abonent> Abonents { get; set; }
        public virtual ICollection<Street> Streets { get; set; }
    }
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38738359
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alonmaster,

для того, чтобы в гриде отобразить вместо ID текстовую информацию, надо указывать колонку вот так:

Код: c#
1.
2.
        
           c.ForeignKey(b => b.GroupId, ViewBag.Groups as SelectList);



данные из связанных таблиц также надо получить и передать в виде SelectList, например через ViewBag (фильтром) или через вью-модель, затем преобразовать в SelectList.
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38738393
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал вот так:

Код: c#
1.
2.
3.
4.
5.
public ActionResult Index()
        {
            var streets = db.Streets.Include(s => s.City).Include(s => s.Rajon).Include(s => s.StreetsTypeList);
            return View(streets.ToList());
        }


Код: 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.
35.
36.
37.
38.
@using Kendo.Mvc.UI
@using WebService.Models


@(Html.Kendo().Grid<Street>()
    .Name("grid")
    .Columns(columns =>
    {
        //columns.Bound(p => p.CityID).Title("ID").Width(50); ;
        columns.Bound(p => p.StreetName).Title("Район");
        columns.Bound(p => p.City.CityName);
        
        
       

        columns.Command(command => { command.Edit(); command.Destroy(); }).Width(220);
    })
            .ToolBar(toolbar => toolbar.Create())
            .Editable(editable => editable.Mode(GridEditMode.PopUp))
            .Pageable()
            .Sortable()
            .Scrollable()
        //.Groupable()
            .Filterable()
            .HtmlAttributes(new { style = "height:430px;" })
            .DataSource(dataSource => dataSource
                .Ajax()
                .PageSize(20)
                .Events(events => events.Error("error_handler"))
                .Model(model => model.Id(p => p.StreetID))
                    .Create(update => update.Action("Create", "Streetsss"))
                            .Read(read => read.Action("EditingPopup_Read", "Streetsss"))
                        .Update(update => update.Action("Edit", "Streetsss"))
                    .Destroy(update => update.Action("Delete", "Streetsss"))


    )
)



но в Grid ничего не выводится.

Также писал код такого вида:

Код: 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.
public  IEnumerable<Street> GetStreets()
        {
            return  db.Streets.Select(street => new Street
            {
                StreetID = street.StreetID,
                StreetName = street.StreetName,

                City = new City()
                {
                    CityID = street.City.CityID,
                    CityName = street.City.CityName
                },
                Rajon = new Rajon()
                {
                    RajonID = street.Rajon.RajonID,
                    RajonName = street.Rajon.RajonName
                },
                StreetsTypeList = new StreetsTypeList()
                {
                    StreetTypeID = street.StreetsTypeList.StreetTypeID,
                    StreetTypeName = street.StreetsTypeList.StreetTypeName,
                    StreetTypeNameFull = street.StreetsTypeList.StreetTypeNameFull
                }
            });



Но, получаю ошибку" В запросе LINQ to Entities нельзя конструировать тип сущности или сложный тип "WebServiceModel.Street"."
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38738408
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alonmaster,

сделайте сначала вьюмодель:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class StreetViewModel
{
   public int Id {get;set;}
   public string Name {get;set;}

   public string CityName {get;set;}
   public string RajonName {get;set;}
   public string StreetTypeName {get;set;}

}



потом соберите данные:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        public ActionResult Index()
        {
            var model = db.Streets.Select(x => new StreetViewModel
            {
                Id = x.StreetID,
                Name = x.StreetName,
                CityName= x.City.CityName,
                RajonName= x.Rajon.RajonName,
                StreetTypeName= x.StreetType.StreetTypeName
            })
                .ToList();
            return View(model);
        }



и вью:

Код: 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.
@using Kendo.Mvc.UI
@using WebService.Models


@(Html.Kendo().Grid<StreetViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.StreetName).Title("Район");
        columns.Bound(p => p.CityName);
        columns.Bound(p => p.RajonName);
        columns.Bound(p => p.StreetTypeName);

        columns.Command(command => { command.Edit(); command.Destroy(); }).Width(220);
    })
            .ToolBar(toolbar => toolbar.Create())
            .Editable(editable => editable.Mode(GridEditMode.PopUp))
            .Pageable()
            .Sortable()
            .Scrollable()
        //.Groupable()
            .Filterable()
            .HtmlAttributes(new { style = "height:430px;" })
            .DataSource(dataSource => dataSource
                .Ajax()
                .PageSize(20)
                .Events(events => events.Error("error_handler"))
                .Model(model => model.Id(p => p.StreetID))
                    .Create(update => update.Action("Create", "Streetsss"))
                            .Read(read => read.Action("EditingPopup_Read", "Streetsss"))
                        .Update(update => update.Action("Edit", "Streetsss"))
                    .Destroy(update => update.Action("Delete", "Streetsss"))


    )
)



никогда не передавайте во вью сущности Entity Framework! делайте свою вью модель со всеми данными, что нужны для отображения. да, работы немного больше, зато результат предсказуемый, без плясок. и так правильно.
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38738442
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое! Все получилось))) Я так понимаю, что эта модель (StreetViewModel) будет приментительна для написания контроллера CRUD)
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38738445
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlonmasterСпасибо большое! Все получилось))) Я так понимаю, что эта модель (StreetViewModel) будет приментительна для написания контроллера CRUD)

да, именно.
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38738464
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите, пожалуйста, в контроллере необходимо включать метод?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }



Если я включаю данный метод появляется ошибка
"Исключение типа "System.InvalidOperationException" возникло в EntityFramework.dll, но не было обработано в коде пользователя
Дополнительные сведения: Невозможно завершить операцию, поскольку класс DbContext был удален."
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38738471
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlonmasterЕсли я включаю данный метод появляется ошибка
"Исключение типа "System.InvalidOperationException" возникло в EntityFramework.dll, но не было обработано в коде пользователя
Дополнительные сведения: Невозможно завершить операцию, поскольку класс DbContext был удален."

так происходит, когда во вью передаётся не до конца материализованная сущность Entity Framework. да, удалять контекст нужно. чтобы убрать ошибку надо исопльзовать вью модели везде, и всегда делать ToList(), иначе во вью уйдёт не коллекция, а запрос, который не сможет выполнится, так как контекст уже удалён.
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38738478
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз спасибо за помощь) А для того, чтобы был выпадающий список из связных таблиц при редактировании (используя метод EDIT), необходимо прописывать во VIEW или пишется метод, который будет эти данные отображать?
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38738505
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlonmasterЕще раз спасибо за помощь) А для того, чтобы был выпадающий список из связных таблиц при редактировании (используя метод EDIT), необходимо прописывать во VIEW или пишется метод, который будет эти данные отображать?

Есть 2 способа:

1. Передать данные сразу во вью, т.е. получить списки из связанных таблиц, и засунуть их во вью-модель или во ViewBag, и указать локальный источник данных в Kendo().DropDownListFor()

2. Запрашивать для каждого выпадающего списка данные динамически через AJAX (в Kendo также указывается DataSource). Данные подгружаются только один раз, так что сильно не повлияет.

Второй способ предпочтительней для больших списков. Первый способ предпочтителен для небольших.
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739293
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Подскажите, что я сделал не так...почему не видно выпадающего списка


Код: 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.
@(Html.Kendo().Grid<StreetViewModel>()
    .Name("grid")
    
    .Columns(columns =>
    {
        columns.Bound(p => p.StreetName).Title("e");
        [color=green]columns.Bound(p => p.CityName).EditorTemplateName("Streets_DropDownList_Cities");[/color]
        columns.Bound(p => p.RajonName);
        columns.Bound(p => p.StreetTypeName);
        columns.Command(command => { command.Edit(); command.Destroy(); }).Width(220);
    })
            .ToolBar(toolbar => toolbar.Create())
            .Editable(editable => editable.Mode(GridEditMode.PopUp))
            .Pageable()
            .Sortable()
            .Scrollable()
            .Filterable()
            .HtmlAttributes(new { style = "height:430px;" })
            .DataSource(dataSource => dataSource
            
            .Ajax()
            .PageSize(20)
            .Events(events => events.Error("error_handler"))
            .Model(model => model.Id(p => p.StreetID))
            .Create(update => update.Action("Create", "Streetsss"))
            .Read(read => read.Action("EditingPopup_Read", "Streetsss"))
            .Update(update => update.Action("Edit", "Streetsss"))
            .Destroy(update => update.Action("Delete", "Streetsss"))
            
    ))
    



Представление. Зеленым цветом выделен участок кода, к которому я хочу применить DropDownList при создании/редактировании.
Для "EditorTemplateName" в каталоге представлений--> Shared создал Папке "Editor Templates", в которой создал представление "Streets_DropDownList_Cities":

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
@using System.Collections
@using Kendo.Mvc.UI

@(Html.Kendo().DropDownList()
    .Name("CityID")
    .DataValueField("CityID")
    .DataTextField("CityName")
            .BindTo((IEnumerable)ViewData["CityID"]))




P.S. DropDownListFor не получилось применить. При написании кода и попытке выбрать ".DropDownListFor " подсвчечивает красным
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739560
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alonmaster,


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
@using System.Collections
@using Kendo.Mvc.UI

@(Html.Kendo().DropDownListFor(x => x)
    .Name("CityID")
    .DataValueField("CityID")
    .DataTextField("CityName")
            .BindTo((IEnumerable)ViewData["CityID"]))
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739575
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt , я это пробовал, но все равно у меня подсвечивает красным и выпадающего списка нет((
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739578
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Контроллер:

Код: 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.
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.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
using System.Collections;
using System.Linq;
using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using WebService.Models;
using Kendo.Mvc.UI;

namespace WebService.Controllers
{
    public class StreetsssController : Controller
    {

        private static WebServiceEntities db = new WebServiceEntities();

        public ActionResult Index()
        {
            return View();
        }

        
        public ActionResult EditingPopup_Read([DataSourceRequest] DataSourceRequest request)
        {
            return Json(GetStreets().ToDataSourceResult(request));
        }

        public static IEnumerable GetStreets()
        {
            var street = db.Streets.Select(x => new StreetViewModel
            {
                StreetID = x.StreetID,
                StreetName = x.StreetName,
                CityName = x.City.CityName,
                RajonName = x.Rajon.RajonName,
                StreetTypeName = x.StreetsTypeList.StreetTypeName
            })
                .ToList();
            return street;
        }


        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create([DataSourceRequest] DataSourceRequest request,
           [Bind(Include = "StreetID,StreetName,CityID,RajonID,StreetTypeID")] StreetViewModel street)
        {
            ViewData["CityID"] = new SelectList(db.Cities, "CityID", "CityName");
            ViewData["RajonID"] = new SelectList(db.Rajons, "RajonID", "RajonName");
            ViewData["StreetTypeID"] = new SelectList(db.StreetsTypeLists, "StreetTypeID", "StreetTypeName");

            //GetCities();

            if (ModelState != null && ModelState.IsValid)
            {
                AddStreet(street);
            }

            return Json(new[] { street }.ToDataSourceResult(request));
            }

        public void AddStreet(StreetViewModel street)
        {
            var str = new Street();
            str.StreetID = street.StreetID;
            str.StreetName = street.StreetName;
            str.RajonID = street.RajonID;
            str.CityID = street.CityID;
            str.StreetTypeID = street.StreetTypeID;

           
                db.Streets.Add(str);
                db.SaveChanges();
               
            }

        public void GetCities()
        {
            ViewData["GetCities"] = (from city_ in db.Cities

                         select new
                         {
                             city_.CityID,
                             city_.CityName

                         }).ToList();
            
        }
        }
    }


    
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739599
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот как правильно:

Код: c#
1.
2.
3.
4.
5.
@using System.Collections
@using Kendo.Mvc.UI
@model int

@(Html.Kendo().DropDownListFor(x => x).BindTo((SelectList)ViewData["CityID"]))



Для For(x => x), Name() не нужен, в BindTo надо передавать SelectList, и не надо больше ничего указывать.

Желательно указать тип модели (тип ID поля)

Красным может подсвечиваться, если либа старая. Надо обновить KendoUI до версии 2014.2.716.545 -- она поддерживает MVC 5.2.x, а также очень желательно поставить Update 3 для visual studio 2013.

Но даже если подсвечиватеся красным, должно работать.
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739607
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я Вам благодарен за помощь и разъяснение. Устранил проблему с Kendo UI (переустановил программу).
Но списка так и нет. Я уже пробовал ViewData передать во все контроллеры, включая и Index
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739610
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlonmasterНо списка так и нет. Я уже пробовал ViewData передать во все контроллеры, включая и Index

Прямо в гриде (inline, как у вас на картинке) выпадающий список можно получить только с помощью column.ForeignKey вместо column.Bind в настройках грида, шаблон здесь не подойдёт.
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739611
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttтолько с помощью column.ForeignKey вместо column.Bind

ошибся:


* с помощью column.ForeignKey вместо column.Bound
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739615
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переделал контроллер:

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
@using System.Collections
@using System.Collections.Generic
@using Kendo.Mvc.UI
@using WebService.Models


@*@(Html.Kendo().DropDownList().BindTo(ViewBag.RajonID))*@

@*@((Html.Kendo().Grid<StreetViewModel>()*@
@((Html.Kendo().Grid<StreetViewModel>()
)
      .Name("grid")

      .Columns(columns =>
      {
          
          columns.Bound(p => p.StreetName).Title("e");
          columns.ForeignKey(p => p.CityID, (IEnumerable) ViewData["CityID"], "CityID", "CityName");
          columns.Bound(p => p.StreetTypeName);
          columns.Command(command =>
          {
              command.Edit();
              command.Destroy();
          }).Width(220);
      })
      .ToolBar(toolbar => toolbar.Create())
      .Editable(editable => editable.Mode(GridEditMode.InLine))
      .Pageable()
      .Sortable()
      .Scrollable()
      .Filterable()
      .HtmlAttributes(new {style = "height:430px;"})
      .DataSource(dataSource => dataSource

          .Ajax()
          .PageSize(20)
          .Events(events => events.Error("error_handler"))
          .Model(model => model.Id(p => p.StreetID))
          .Create(update => update.Action("Create", "Streetsss"))
          .Read(read => read.Action("EditingPopup_Read", "Streetsss"))
          .Update(update => update.Action("Edit", "Streetsss"))
          .Destroy(update => update.Action("Delete", "Streetsss"))
           

      )
      )
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739618
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alonmaster,

Вот здесь ViewData["CityID"] у тебя пусто, наверное забыл заполнить в контроллере?
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739619
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде все в контроллере написано...

Код: 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.
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.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
using System.Collections;
using System.Linq;
using System.Web.Mvc;
using Kendo.Mvc.Extensions;
using WebService.Models;
using Kendo.Mvc.UI;

namespace WebService.Controllers
{
    public class StreetsssController : Controller
    {

        private static WebServiceEntities db = new WebServiceEntities();

        public ActionResult Index()
        {
            ViewData["CityID"] = new SelectList(db.Cities, "CityID", "CityName");
            ViewData["RajonID"] = new SelectList(db.Rajons, "RajonID", "RajonName");
            ViewData["StreetTypeID"] = new SelectList(db.StreetsTypeLists, "StreetTypeID", "StreetTypeName");
            return View();
        }

        //private  StreetModel streetModel = new StreetModel(new WebServiceEntities());
        public ActionResult EditingPopup_Read([DataSourceRequest] DataSourceRequest request)
        {
            return Json(GetStreets().ToDataSourceResult(request));
        }

        public static IEnumerable GetStreets()
        {
            var street = db.Streets.Select(x => new StreetViewModel
            {
                StreetID = x.StreetID,
                StreetName = x.StreetName,
                CityName = x.City.CityName,
                RajonName = x.Rajon.RajonName,
                StreetTypeName = x.StreetsTypeList.StreetTypeName
            })
                .ToList();
            return street;
        }


        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create([DataSourceRequest] DataSourceRequest request,
           [Bind(Include = "StreetID,StreetName,CityID,RajonID,StreetTypeID")] StreetViewModel street)
        {
            ViewData["CityID"] = new SelectList(db.Cities, "CityID", "CityName");
            ViewData["RajonID"] = new SelectList(db.Rajons, "RajonID", "RajonName");
            ViewData["StreetTypeID"] = new SelectList(db.StreetsTypeLists, "StreetTypeID", "StreetTypeName");

            //ViewBag.CityID = new SelectList(db.Cities, "CityID", "CityName");
            //ViewBag.RajonID = new SelectList(db.Rajons, "RajonID", "RajonName");
            //ViewBag.StreetTypeID = new SelectList(db.StreetsTypeLists, "StreetTypeID", "StreetTypeName");
            //GetCities();

            if (ModelState != null && ModelState.IsValid)
            {
                AddStreet(street);
            }

            return Json(new[] { street }.ToDataSourceResult(request));
            }

        public void AddStreet(StreetViewModel street)
        {
            var str = new Street();
            str.StreetID = street.StreetID;
            str.StreetName = street.StreetName;
            str.RajonID = street.RajonID;
            str.CityID = street.CityID;
            str.StreetTypeID = street.StreetTypeID;

           
                db.Streets.Add(str);
                db.SaveChanges();
               
            }

        public void GetCities()
        {
            ViewData["GetCities"] = (from city_ in db.Cities

                         select new
                         {
                             city_.CityID,
                             city_.CityName

                         }).ToList();
            
        }
        }


        /*--------------------------------------------------------------*/

        //[AcceptVerbs(HttpVerbs.Post)]
        //public ActionResult EditingPopup_Update([DataSourceRequest] DataSourceRequest request, [Bind(Include = "StreetID,StreetName,CityID,RajonID,StreetTypeID")] StreetViewModel street)
        //{
        //    if (ModelState.IsValid)
        //    {
        //        EditCity(city);
        //    }


        //    return Json(new[] { city }.ToDataSourceResult(request));
        //}

        //public void EditCity(City city)
        //{
        //    var entity = db.Cities.FirstOrDefault(e => e.CityID == city.CityID);
        //    if (entity != null)
        //    {
        //        entity.CityID = city.CityID;
        //        entity.CityName = city.CityName;
        //        //db.Entry(city).State = EntityState.Modified;
        //        db.SaveChanges();
        //    }
        //}

        ///***********************************************************************/
        //[AcceptVerbs(HttpVerbs.Post)]
        //public ActionResult EditingPopup_Destroy([DataSourceRequest] DataSourceRequest request, [[Bind(Include = "StreetID,StreetName,CityID,RajonID,StreetTypeID")] StreetViewModel street)
        //{
        //    if (ModelState.IsValid)
        //    {
        //        DeleteCity(city.CityID);
        //    }


        //    return Json(new[] { city }.ToDataSourceResult(request));
        //}

        //public void DeleteCity(int id)
        //{
        //    City city = db.Cities.Find(id);
        //    db.Cities.Remove(city);
        //    db.SaveChanges();
        //}
        ////protected override void Dispose(bool disposing)
        ////{
        ////    if (disposing)
        ////    {
        ////        db.Dispose();
        ////    }
        ////    base.Dispose(disposing);
        ////}


    }


    
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739624
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас в контроллере:

Alonmaster
Код: c#
1.
2.
3.
4.
5.
6.
7.
public ActionResult Index()
        {
            ViewData["CityID"] = new SelectList(db.Cities, "CityID", "CityName");
            ViewData["RajonID"] = new SelectList(db.Rajons, "RajonID", "RajonName");
            ViewData["StreetTypeID"] = new SelectList(db.StreetsTypeLists, "StreetTypeID", "StreetTypeName");
            return View();
        }

Alonmaster
Код: c#
1.
columns.ForeignKey(p => p.CityID, (IEnumerable) ViewData["CityID"], "CityID", "CityName");



Надо просто исправить:

Alonmaster
Код: c#
1.
columns.ForeignKey(p => p.CityID, (SelectList) ViewData["CityID"]);
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739629
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Снова появилась ошибка. я так понимаю, что что-то не так с моделью...
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739631
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlonmasterСнова появилась ошибка. я так понимаю, что что-то не так с моделью...

Вы наверное сделали так:

Alonmaster
Код: c#
1.
columns.ForeignKey(p => p.CityID, (SelectList) ViewData["CityID"], "CityID", "CityName");



А надо было так:

Alonmaster
Код: c#
1.
columns.ForeignKey(p => p.CityID, (SelectList) ViewData["CityID"]);
...
Рейтинг: 0 / 0
ASP.NET with KENDO UI
    #38739637
Alonmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET with KENDO UI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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