|
Страници по тази тема: 1 | 2 | (покажи всички)
Тема
|
[Off topic] ASP.NET MVC 4 въпрос
|
|
Автор |
Beco_ (Boogie chillun) |
Публикувано | 13.08.13 21:08 |
|
Имам едно старо проектче което съм писал на ASP.NET/DOT.NET 2.0 и трябва да го обновя и разширя като функционалност с ~ 1/3 отгоре и се чудя дали да продължа с ASP.NET web forms или за премина към ASP.NET MVC 4 заради CV-то. Приложението е нищо особено - бизнес приложение и за интерфейса ще се справя с jQuery UI. Изборът е ясен - ше се се използва ASP.MVC щото имам гридове които вече пълнят около 30 000 записа без странициране, въпросът ми е - ASP.NET MCV като чета (нямам никакъв опит) изисква Entity Framework, Linq и всичките п*тки майни на МС, но мога ли за контролера да използвам SQL, някакъв List и Json, ъ?
Съвети?
TIA
... for a brief moment it seemed that rock 'n roll would inherit the earth.Редактирано от Beco_ на 13.08.13 21:11.
| |
Тема
|
Re: [Off topic] ASP.NET MVC 4 въпрос
[re: Beco_]
|
|
Автор |
Гypy (bangbus driver) |
Публикувано | 13.08.13 21:14 |
|
Контролера ти по дефоулт връща ActionResult, но може и да върне JsonResult - http://msdn.microsoft.com/en-us/library/system.web.mvc.jsonresult(v=vs.108).aspx
public JsonResult GetJSON()
{
JsonResult json = new JsonResult
{
Data = jsonResult;
};
return json;
}
Вътрешно фреймуърка прави нещо от сорта на
new JavaScriptSerializer().Serialize(jsonResult.Data);
На клиента това го хващаш и го парсваш с jQuery $.parseJSON
http://api.jquery.com/jQuery.parseJSON/
и после вече го правиш каквото го правиш.
--
One day it will make sense.
| |
Тема
|
Re: [Off topic] ASP.NET MVC 4 въпрос
[re: Гypy]
|
|
Автор |
rabin () |
Публикувано | 13.08.13 21:22 |
|
Довчера се дърлихте, днес си помагате. Евала! Доброто ще победи, някой ден, ама аз залагам винаги на лошите. И в двата случая печеля.
| |
Тема
|
Re: [Off topic] ASP.NET MVC 4 въпрос
[re: Beco_]
|
|
Автор |
Гypy (bangbus driver) |
Публикувано | 13.08.13 21:22 |
|
Ето тука цял добре написан пример -
http://stackoverflow.com/questions/9921517/use-ajax-and-jsonresult-in-asp-net-mvc-3
От клиента викаш контролера с $.ajax, контролера връща JsonResult, после на success event-a на jQuery $.ajax парсеваш респонса с $.parseJSON и си готов, данните са ти на клиента.
Aко го правиш за СВ, може да сложиш и AntiForgeryToken за секюрити, да покажеш, че и това знаеш:
http://msdn.microsoft.com/en-us/library/dd470175(v=vs.108).aspx
--
One day it will make sense.
| |
Тема
|
Re: [Off topic] ASP.NET MVC 4 въпрос
[re: Beco_]
|
|
Автор |
chupac (chupacabron) |
Публикувано | 13.08.13 21:22 |
|
можеш, но така описано май ще ти е по-лесно да хванеш ентити и линк.
Al: A Bundy never wins, but a Bundy never quits.
| |
Тема
|
Re: [Off topic] ASP.NET MVC 4 въпрос
[re: Гypy]
|
|
Автор |
chupac (chupacabron) |
Публикувано | 13.08.13 21:23 |
|
хмм, тва последното изглежда интересно.
Al: A Bundy never wins, but a Bundy never quits.
| |
Тема
|
Re: [Off topic] ASP.NET MVC 4 въпрос
[re: chupac]
|
|
Автор |
Гypy (bangbus driver) |
Публикувано | 13.08.13 21:30 |
|
Автогенерираните куерита на Entity Framework и Linq-2-Sql връщат IQueryable. Toва лесно може да се кастне с .ToList() или .ToArray() до нещо, което имплементира Serializable и може да се конвертира до Json, примерно:
var query = from book in books
select new
{
label = book.Title,
value = book.ID
};
var data = JavaScriptSerializer().Serialize(query.ToList());
JsonResult json = new JsonResult
{
Data = data;
};
return json;
--
One day it will make sense.Редактирано от Гypy на 13.08.13 21:32.
| |
Тема
|
Re: [Off topic] ASP.NET MVC 4 въпрос
[re: Гypy]
|
|
Автор |
chupac (chupacabron) |
Публикувано | 13.08.13 21:33 |
|
мда де, нещо подобно. остава обаче въпросът как е с производителността - весо говори за гридове с по няколко десетки хиляди записа.
Al: A Bundy never wins, but a Bundy never quits.
| |
Тема
|
Re: [Off topic] ASP.NET MVC 4 въпрос
[re: chupac]
|
|
Автор |
Гypy (bangbus driver) |
Публикувано | 13.08.13 21:44 |
|
IQueryable в EF има лейзи лоадинг, тоест можеш да направиш така
iqueryable = iqueryable.Skip((pageIndex - 1) * pageSize).Take(pageSize);
И то ще ти генерира правилното query към SQL Server да ти върне точно тези данни, примерно ред от 2000 до 2100, дори да са милиони редовете в базата, ще се изпълни за милисекунди. Тези pageIndex и pageSize ги пращаш от клиента, jQuery $.ajax може да задава параметри.
Реално вътрешно това го прави нещо от сорта на
SELECT * FROM
(
SELECT row_number() OVER
(това е синтаксиса за бързо куери на ред от до в SQL Server, но това ЕФ-2-SQL го прави автоматично)
Най-добре е request-a да е в ОData format, това е популярно в момента.
--
One day it will make sense.Редактирано от Гypy на 13.08.13 21:46.
| |
Тема
|
Re: [Off topic] ASP.NET MVC 4 въпрос
[re: chupac]
|
|
Автор |
Beco_ (Boogie chillun) |
Публикувано | 13.08.13 21:55 |
|
Бягам от Entity Framework и Linq като дявол от тамян. Не ми харесва като производителност и синтаксис.
Преди време имах Силвърлайт проект и след като разбах как с WCF мога да връщам каквито си искам данни и както си искам заебах Entity и Linq с най-голямо удоволствие. А липсата на странициране на толкова голямо количество записи е гаф на възложителя. Предположих предварително, че нещата ще излязат извън контрол, но той държеше да е така както иска. Със сегашното уеб приложение интерфацето замръзва за няколко минути а при xxl на брой конкурентни заявки, сървъра директно казва, че няма памет. Хубавото е че се случва само в една страница и има алтернативен вариант за извеждане на резултатите.
... for a brief moment it seemed that rock 'n roll would inherit the earth.
| |
|
Страници по тази тема: 1 | 2 | (покажи всички)
|
|
|