- Apple MacBook
- Home server / házi szerver építése
- Bambu Lab 3D nyomtatók
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Milyen billentyűzetet vegyek?
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Először égett le egy újságnál a GeForce RTX 5090
- Azonnali fotós kérdések órája
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- SSD kibeszélő
Hirdetés
Új hozzászólás Aktív témák
-
Nem bántás, de miért ilyen hülyeségekkel foglalkozol, mint ez és a buborék? Nem kioktatásnak szánom, csak leírok pár dolgot tanácsként. Miért nem életszagú példákkal dolgozol? Írj mondjuk valamilyen katalógust magadnak. Abban minden megvan, ami kellhet az alapokhoz (adatbázis, felület, backend). Kérdés, hogy mi a célod?
Másik tanácsom: dobj ki minden eddigi könyvet és linket (ahonnan ez van, onnan több példát ne vegyél, mert szerintem elavult) - és főleg C tudást, mert itt csak tömbökkel operálsz, pedig ezer éve vannak kollekciók és mindenhol azt használják már, hacsak nem valami hardver közeli dolgot (driver-t) vagy ilyesmit akarsz írni. Olvasgass az elnevezésekről és használd a ReSharper nevű igen hasznos progit a Visual Studio-ban.
A lelkesedés hasznos, de ne pazarold olyanokra, hogy milyen típusú egy tömb indexe - ez azért a nevéből is adódik. Kész, lépj tovább. Ha valaminek a valódi, lefordított kódja érdekel, akkor használj Reflectort. Garantáltan meglepődsz majd.
-
Jester01
veterán
-
Lacces
őstag
Visszatértem.
Én nagyon elakadtam egy feladat leprogramozásában. Rendkívül rosszul gondolkodom benne. Már 4 órát töltök vele, netet böngészem de nem bírom felfogni, amiket ott találok (pontosat olyat nem, mint ami nekem kell). Kellene a szájba rágós segítség.
Feladat: Program írása... a beolvasott számok összes másodosztályú, ismétlés nélküli kombinációját lexikografikusan növekvő sorrendben!
Példa:
7 2 5 3
Ezt rendezem, okés, beolvastatom, gyerekjáték.
A fenti bemenethez tartozó kimenet:
2 3
2 5
2 7
3 5
3 7
5 7Valami ilyet írtam legutolsó probálkozásom, ami egy hulladék:
static void combination_out_repeat(int[] a)
{
for (int i = 0; i < a.Length; i++)
{
int actual = a[i];
//int next=a[i+1];
int last = a[a.Length - 1];
while (actual<last)
{
Console.WriteLine(a[i]+" "+a[i+1]);
}
actual++;
}
Már ideges is vagyok, hogy ilyen sok időm elment egy piti feladatra... de nem bírom le implementálni, amit akarok.
QuickSort, BubbleSort stb... leprogramozom és értem is. De itt a .... kivan, hogy nem megy, már a falat verem.Ha egy kezdőnek szánt, ilyen számos példás weboldalt tudtok ajánlani már az is tökéletes!
-
Vapor
aktív tag
Sziasztok!
Most kezdtem el C#-ban programozni tanulni (egyetem), viszont egy kis gondba ütköztem.
Egy additív színekeveréses programot kellene készítenem, de sajnos vmi nem kerek.
Így nézne ki a program:
A csuszkával kéne szabályozni, hogy az adott sorban (R,G,B) az első textbox-ban milyen szín legyen, az alsó nagy textbox-ban pedig a végeredmény lenne.
Itt egy kép az általam megadott kódról.
A problémám pedig az lenne, hogy ha F5-el elindítom a programot, akkor ugyan semmi error-t nem dob, de a csúszkákat mozgatva nem történik semmi...
Mit ronthattam el?(órán ugyanezzel a kóddal működött, csak nem volt nálam pendrive, hogy lementsem, és a lecke ennek a programnak tovább "fejlesztése")
Előre is köszi!
-
Jester01
veterán
Azért nem kell mert a CompareTo az az Int32 saját publikus metódusa. Mellesleg ez valóban implementálja az IComparable.CompareTo-t, de ugye te nem azon keresztül hívod. Még ha azon keresztül hívnád is, a fordító is tudja, hogy az int az IComparable. Lásd msdn
A sima összehasonlítás nyilván egyszerűbb. A CompareTo például akkor jó, ha egyszerre akarod eldönteni a kisebb-egyenlő-nagyobb kérdést.
MOD: ja "És azért nem kell az IComparable interfészt implementálni mert a static void main() és static void bubble-el dolgozom?"
Nem. Annak az osztálynak kell implementálnia amin hívni akarod. Jelen esetben ez az int lenne, ami implementálja is. De mint fentebb említettem, te egyáltalán nem használod az IComparable-t. -
Lacces
őstag
Van kettő buborékrendezéses algoritmus C#-ban.
[C static void bubbleSort(int[] array)
{
// Write your code here.
int j;
int temp;
int i = array.Length - 1;
while (i > 0)
{
int swap = 0;
for (j = 0; j < i; j++)
{
if (array[j] > (array[j + 1]))
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
swap = j;
}
}
i = swap;
}}
}A másikban az eltérés csak az if feltétel if (array[j].CompareTo(array[j + 1]) > 0)
1.Kérdés, hogy hogy nem kell a függvény argumentumát int[ ] array - ről IComperable[ ] array -re változtatni? Hogy-hogy nem kéri ezt az interfészt?
És azért nem kell az IComparable interfészt implementálni mert a static void main() és static void bubble-el dolgozom?
(Class-okat nem használok, csak egy sima tömb rendezés)2. Kérdés, van-e jelentős eltérés a két if feltétel között?
CompareTo() annyit tesz, ha igaz, hogy a j-dik elem nagyobb mint a j+1-dik akkor 1-el tér vissza, és így tovább. És ha ez az érték 1 ami > 0, nál akkor lép be a feltételbe.
De akkor nem egyszerűbb csak simán az első verzió( array[a]>array[a+1])?Csak érdekelnek a miértek és a hogyanok
-
Jester01
veterán
Igen, az indexek int típusúak.
Valahol láttam, hogy a List-nek az index értéke 0-32767-ig terjed
Nem tudom hol láttad, nem így van.Egy array-nek mennyi a maximális értéke? Olyat találtam, hogy 32bites rensdzeren max 2GB körül van
Két korlát van: az indexeknek bele kell férni az int-be illetve az egész cuccnak a virtuális címtartományba. Az előbbi azt jelenti, dimenziónként maximum 2^31-1 elem lehet, utóbbi függ az operációs rendszertől és persze attól, hogy mekkora elemek vannak a tömbben.
Az int objects-ért meg jól fejbevágnám aki írta. Ha egy int-et "bedobozolsz" (boxing) akkor lesz int object, addig meg csak int.
-
Lacces
őstag
Jester01, igazad volt, kösz, hogy szóltál (pont olyan 2 példát használtam tesztre amire jó volt a megoldás..)
Illetve még ezek a kérdések vannak:
Mi a tömb indexének a típusa?
Lehet, hogy rosszul kerestem rá neten ezért nem találtam a megoldást. Én Integert mondanék. Meg néhány helyen úgy láttam. (Bár msnd-en lehet rosszul kerestem, ott nem láttam)Ez nem a kérdés része, de érdekel a válaszotok:
Valahol láttam, hogy a List-nek az index értéke 0-32767-ig terjed, ami meg a Short-nak a felső értékevel egyezik meg...
Egy array-nek mennyi a maximális értéke? Olyat találtam, hogy 32bites rensdzeren max 2GB körül van, bár máshol meg ilyen választ találtam:"Keep in mind that every time you place an object in an array, it allocates a certain amount of memory to that object. So, if an object of type int is 32 bits long, that's how much memory that would be allocated for each element in the array. So, if an array consisted of 500 int objects, then it would be right at around 2KB in size. "
Itt egyébként az int objects most pontosan mire utal?
Mi a legkisebb index értéke?
0
Mi történik, ha a programjában megkísérel hozzáférni egy érvénytelen indexű tömbelemhez?
IndexOutOfRangeException keletkezik -
Lacces
őstag
válasz
Jester01 #2385 üzenetére
Köszi, a ref is jól jön ilyenkor, meg a kollega megoldása is
"This allows you to declare an array and assign any array of int objects to it, regardless of the array's length." - ezt olvastam fent msdn library-ben. Itt az int objects akkor mi akar lenni?
Utána eszembe jutott, hogy az int[] az referencia típus, mert a system.object-ből öröklődik.
-
Jester01
veterán
1. Igen, a string elemei char típusúak. Lásd msdn.
2. Ránézésre nem lehet eldönteni melyik a gyorsabb, de megmérni persze meg lehet. Csinálj egy ciklust ami adott darabszámig vagy ideig fut, és számold ki. Ha csak egyetlen mezei ascii karaktert akarsz konvertálni (magyarul 0-9) akkor a leggyorsabb garantáltan az egyszerű kivonás lesz (c - '0')
3. A Convert.ToInt32-nek van pár overload-ja, a különböző típusokhoz, így char-hoz is. Vigyázat, ez nem számként konvertál, hanem karakterkódként! Tehát nem ekvivalens a kettő. Ha a számot akarod, akkor itt is kell a ToString(). Lásd illusztráció.
-
Lacces
őstag
válasz
Jhonny06 #2382 üzenetére
Köszönöm. Így okés elméletben.
1.Kérdés: Még sosem írtam c#-ban mutatókat. Megkérhetlek arra, hogy a kódomat átírod szintaktikailag helyes formában?
Én így figyeltem ki netről: de nem jó bekavar neki folyton valamistatic unsafe void Main(string[] args)
{
// double[] array = new double[30];
int number = 0;
int *pointer = &number;
int[] numbers = new int[1];
m(*pointer, numbers);
// number: 0, numbers[0]: 3 mutatók nélkül
System.Console.WriteLine("number is " + number + " and numbers[0] is " + numbers[0]);
Console.ReadLine();
}
static unsafe void m(int *x, int[] y)
{
*x = 3;
y[0] = 3;
}
Az m() argumentummal van baja, azt írja ki rá, hogy int-et nem lehet int*-ba konvertálni...2.Kérdés
a static void m( int x, int[] y){...}-nak, hogy tudok szintaktikailag helyes return értéket adni?
az int-et még elfogadja, de az int[]-t már nem. Hiába írtam át a void-ot int-re úgy sem fogadja el.Törölhető! Már megkaptam rá a választ!
Csak közben itt magamtól próbáltam és netről beszerezni az infókat!
Köszönöm, hogy már leírtad a megoldást!
-
Jhonny06
veterán
1., A string egy karakterlánc, képzeld el úgy, mint egy tömböt, aminek nem egész (int) a típusa, hanem karakter (char). Egy string elemét is el tudod érni úgy, mintha karaktertömb lenne, azaz:
string nev = "Marci";
esetén: a nev 0. eleme (azaz az első elem) egy M betű lesz.
A többit szerintem fölösleges kitárgyalni. Nem tudom, hogy mit akarsz ezzel a kóddal, de egy string hosszát így tudod meghatározni (a String osztály minden objektuma el tud érni bizonyos tagfüggvényeket, a Length a hosszát adja vissza, angolból ismerős lehet), például:
String isbn = Console.ReadLine();
Console.WriteLine(isbn.Length); -
Jester01
veterán
Igen, az int az értéktípus, az int[] pedig referencia típus. Az int[] elemei ettől függetlenül nem int típusú objektumok, szerintem ott valamit félreértettél.
Érték típus átadásakor másolat készül az értékről, ahogy azt fentebb a kollega is írta. Referencia típusnál csak a referenciából készül másolat, nem magáról az objektumról. Tehát a függvényedben y ugyanarra a tömb objektumra referencia, ezért a benne lévő elemeket tudod módosítani akkor is, ha azok már érték típusok. Továbbá csinálhatsz egy új tömböt is, pl.: y = new int[1];. Ezáltal az y már erre az új tömbre fog hivatkozni. Viszont mivel magából a referenciából másolatod van, ez semmilyen módon nem befolyásolja a Main-ben lévő tömböt.
Használhatod még a ref kulcsszót paraméterek átadásához, ekkor semmilyen másolat nem készül. Mind az x mind az y értékének változása egyből kihat a Main-re is.
-
Jhonny06
veterán
Pl.:
static int m(int x, int[] y)
{
x = 3;
y[0] = 3;
return x; //!!!!!!!!!!
}
static void Main(string[] args)
{
int number = 0;
int[] numbers = new int[1];
System.Console.WriteLine("number is " + m(number, numbers) + " and numbers[0] is " + numbers[0]);
Console.ReadLine();
} -
Lacces
őstag
Convert Téma:
String isbn = Console.ReadLine();
int sum = 0;
for (int i = 0; i < 9; i++)
{
sum += Convert.ToInt32(isbn[i]) * (i+1);
sum += int.Parse(isbn[i].ToString()) * (i + 1);
}1. Minden String eleme az char típusú? (Amikor debuggal mentem, mindekttőnél megfigyeltem, hogy az isbn értéke az char, és nem string.
2. int.Parse() argumentuma muszáj, hogy string legyen, ezért az isbn(i).ToString()-et kell alkalmazni, hogy stringgé konvertáljam, kérdésem, így a ez lassabb vagy gyorsabb-e mint a Convert.ToInt32? Illetve ezt a sebességet, hol lehet esetleg a VS-ben "megmérni"?
3. Convert.ToInt32 az isbn(i) paramétert hogyan kezeli? (hogyan használja fel, a működése érdekelne), mert ő ezt így simán elfogadja szintaktikailag helyes, csak érdekel, hogy ezt a háttérben hogyan dolgozza fel.
Valahol úgy olvastam, hogy meghívja rá az Int.ParseTry()-t ha igaz, akkor átkonvertálja (és állítólag ezért is lassabb, mint az int.Parse(). De még mielőtt az Int.ParseTry()-t meghívja előtte az isbn(i)-t átalakítja stringgé? -
Jhonny06
veterán
Nem állítottál be visszatérési értéket a függvényednek, azaz void. Érték szerinti paraméterátadásnál csak egy másolat készül a változóról, amit a függvénybeli értéke fel is vesz, de visszatérésnél a main() függvényben az eredetit írod ki, ami nem kapta meg. A tömböt dinamikusan foglaltad le, a függvényben egyből a memóriába írod, így az jó. A number változódat ne érték szerint add át, hanem mutatóval. Vagy legyen a függvényednek visszatérési értéke és akkor az x-el térj vissza.
-
Lacces
őstag
Sziasztok!
Jönnek a fórum kérdéseim:
static void Main(string[] args)
{
int number = 0;
int[] numbers = new int[1];
m(number, numbers);
System.Console.WriteLine("number is " + number + " and numbers[0] is " + numbers[0]);
Console.ReadLine();
}
static void m(int x, int[] y)
{
x = 3;
y[0] = 3;
}
Ennek a programnak a kimenet meglepett, próbáltam neten keresni a megoldás rá, hogy miért de nem esett le.
Kimenet: number is 0 and numbers[0] is 3
number=0, és numbers[0]=3.1.Miért? Hogy-hogy az egyiknél megtörtént az érték átadás a másiknál nem?
a C# az int x, az ugye egy értéktípus?
aztán néztem az msdn library-t és ott volt írva, hogy az int[] elemei nem más mint int típusú objektumok.Lehet, hogy itt van a lényeg elásva? Gondoltam itt arra, hogy nincs return így az int-nek nem adja vissza az értékét. de mivel az int[] object azért annak az értékét betudja állítani.
Bár nem tudom, hogy ez a logika megállja-e a helyét? -
Lacces
őstag
Igen, a miértek érdekeltek, Jester válasza jól jött, mert 1 kivételével mindegyiknél tudtam rá a választ, az egyiknél meg nem voltam biztos :-)
Személy szerint az első válasz: x>y>0, az átalakítás része, hogy (x>y) az egy bool érték (false/true) és az nem hasonlítható össze egy 0-al (néha előfordul, hogy a 0-t false-nak nézem be, vagy a C-s feltételekben, ahol a kiértékelés sosem false vagy true, hanem 0 vagy 1
-
válasz
WonderCSabo #2378 üzenetére
Ha csak a miértek érdekli, mert rájött, akkor jó.
-
Jester01
veterán
Így van.
1. x > y > 0 => (x > y) > 0 és boolean-t nem lehet számmal hasonlítani.
2. x = y && y az && logikai operátor, nem lehet int-re alkalmazni (a bitenkénti operátor az &)
3. x /= y ez ugye helyes
4. és 5. or illetve and nem c# operátor, helyesen | és &
6. (x != 0) || (x = 0) az (x = 0) típusa int, amit nem lehet || logikai operátorhoz kapcsolni. -
Lacces
őstag
Hello!
Van ez a feladat:int x
int ySzabályos kifejezések-e a C#-ban ha x és y az int típusúak.
x > y > 0
x = y && y
x /= y
x or y
x and y
(x != 0) || (x = 0)Az én eredmény:
Én egyedül csak az x/=y-t tartom szabályos kifejezésnek, az összes többi nem az.
Vagy ha más is szabályos, akkor az miért?előre is köszi a válaszokat!
-
SimS
senior tag
Üdv
Értem én, hogy majd a szerver lekezeli magától, meg hibaoldal.. de ha már szimpla hibaoldal van, akkor ott lehet fejlesztői hanyagság is ám
Az meg fekete autó ide vagy oda...
Megoldottam végül, használtam int?-et, aztán lekezelem egy plusz metódushívással, aztán kész. Valahogyan biztonságosabbnak gondolom így.. aztán majd jól megmondják mások, hogy szar
Köszi a választ,
SimS
-
SimS
senior tag
Üdv
Fejlesztek egy alkalmazást asp.net mvc3-ban EF code-first segítségével.
Mennek a dolgok szépen kb., de nem találok arra megoldást hogyan lehet injection-t megakadályozni.A konkrét példa az, hogy a meglévő link pl. "myapp/Company/details/1" (ahol details a controller metódus a CompanyController-ben, az 1 az ID) esetén ha az id helyére mondjuk szöveget írok, akkor megfő az egész:
"The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Details(Int32)' in 'myapp.Controllers.CompanyController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter." -el.
Ebben az esetben az optional paraméter nem működik (egyébként a routing szerint azon van), hiszen ez az ID határozza meg a view-ba kerülő model objektumot.
Az megint más kérdés, ha már int a szerencsétlenje, akkor meg kell nézni, hogy van-e olyan ID-jú elem, de az egyszerűbb.
Valaki esetleg help?
SimS
-
kispx
addikt
Console osztály tipikusan ilyen, elég egy belőle, nem kell példányosítani. Nincs értelme és elég fura lenne, ha egyszerre két példány lenne belőle.
Az abstract osztály arra való, hogy közös felületet biztosítsunk a leszármazottainak.. Azaz itt egyetlen egy darab példányt sem akarunk létrehozni.
-
Lacces
őstag
Aham, így értem, akkor miért hasznos
A linket is köszönöm, a design patterns-eket átnézem, azt tanulni kell. Úgy tűnik van még mit
Ettől mindig frászt kapok, hogy valami létezik, és nem kell létrehozni...
Eddig a konstruktorról tudtam, hogy defaultan létezik egy publikus változata. És ha azt private-á teszem nem lehet létrehozni újabbat.Staticnál nem tudtam, ott mindig létre volt hozva tutorialokban. Van még mit tanulni! Köszönöm szépen!
-
-
Lacces
őstag
Aham, köszönöm szépen, ez az instance() nagyon érdekes. Még így sosem használtam.
Fórumon volt egy kérdés: Hogyan lehet megakadályozni, hogy egy osztályból példányosítani lehet.
Gondolom arra gondolt az illető, hogy objektumot ne lehessen létrehozni az osztályból.3. az jó, tetszik, egyszerű és pontos, rem nem baj ha lopom!
Köszönöm mindenkinek a segítséget!
-
A statikus osztályt nem kell létrehozni, elég csak hivatkozni rá, mert egy példányban létezik.
egyébként egy osztály egy példányban való létezése például hasznos, ha mondjuk egy konfig állományt olvasol be és dolgozol fel. Ilyenkor csak egyszer teszed meg és kizárhatod, hogy újra létrejöjjön. Tipikusan az erőforrás kezelő logikát szokták ilyen osztályokban tárolni.
-
Lacces
őstag
válasz
martonx #2357 üzenetére
2.-hoz Megvan emléxem rá, char típusú volt! és úgy is volt msdn-en. de nem fogadták el.
Az, hogy 32 bites, vagy 64 bites rá sem volt írva. Ez csak az int-nél számít? Most ez a téma érdekelni kezdett
Amúgy meg a kérdések, olyan lettek volna, hogy néhányan kiröhögik ahogy meg volt fogalmazva, látszott rajta, hogy valaki olyan kérdezett, aki annyira nem ért hozzá. De tényleg nem az infós megfogalmazások voltak.
Köszönöm a választ!
-
Lacces
őstag
A statikus objektum-nál mindig kétségbe vagyok esve...
Azt mégis mindig létre lehet hozni, és változik a tartalma osztály szinten. Abból csak létre lehet hozni 1-et (egyszer volt egy tutorial, ahol egy statikus csirke objektum volt, és annak az adati folyton változtak, én legalább is így emléxem rá, de ez már rég... 3-4éve volt), bár lehet többet nem, nem tudom.Haver mondta, hogy volt ilyen teszt kérdése, de fogalmam sincs, hogy minek ilyet kérdezni, mondjuk azért, hogy mennyire tudja a .net-et
De most minek olyan osztályt létrehozni, ahol nem hozzok létre objektumot belőle?
Akkor már abstract osztályt írnék...És köszönöm a tippet utána kérdezek!
-
1. Nem tudom, mit szeretnél pontosan, de ha csak 1 példányt akarsz, akkor erre van egy design pattern, a neve: Singleton
Amúgy igen, abstract, static vagy sealed (mondjuk ez csak származtatásra érvényes) és nem lehet példányosítani.
A példány instance angolul.
3. Nagyjából jó, talán kicsit túlbonyolítottad, azért nem fogadták el. Az érték szerinti átadásnál magát az értéket adod át, mindegy, hogy az hol van tárolva. Ha hivatkozol rá, magára az értékre hivatkozol, míg referenciánál egy már lefoglalt memóriaterületre (ref esetén az érték szerinti is átadható így) - de nem adod át a címet.
Ebben az esetben egy új példányt kell létrehoznod, ha használni akarod, erre való a new szó. Ilyenkor bármelyik példány módosít, mindenki a módosítottat látja majd.
-
Lacces
őstag
Ismét műxik a gép, ismét faggatom a prohardver kollegákat
1. Kérdés, magamnak:
Hogyan lehet .net-ben megakadályozni, hogy egy osztályból ne lehessen példányosítani? (objektumot létrehozni)Válasz: Privát konstruktor (esetleg van más is?, jó a válaszom)
Megj.: angolul a példányosítás hogy van? (dont create object-el keresek rá)
2. Kérdés, teszten volt
Egy 3 elemű tömb mennyi helyet foglal a memóriában?
(én 6Kb-ot írtam, mert egyszer rá kerestem, és az msdn-en volt írva, hogy 128 elemű tömb 256Kb-ot foglal el...)
De nem tudom, hogy akkor jó-e a 6Kb-os válaszom, egy teszt kérdésnél3. Kérdés teszten volt
Mi a különbség referencia és érték szerinti átadásnál?
Válaszom: referencia szerinti átadásnál a memóriacímet (memóriahelyre hivatkozok)adom át egy változónak(adatnak, objektumnak), és mindig a memóricímen történik a változás. Több változó is mutathat ugyanarra a memória címre.
Érték szerintinél, meg egy értéket adok át, azaz másolom a válozóban tárolt értéket.
De nekem ezt a választ nem fogadták el...A válaszokat előre is köszönöm
-
válasz
martonx #2349 üzenetére
Az Orchard-os docs-ot, már teljsen átnéztem, de elég alap segítséget ad. Ezek alapján csináltam meg az modult, meg ami eddig benne van.
Amúgy itt van például ez a rész:
Ez a CourseDriver.cs forrása:public class CourseDriver : ContentPartDriver<CoursePart>
{
OrchardEntities db = new OrchardEntities();
protected override DriverResult Display(CoursePart part, string displayType, dynamic shapeHelper)
{
var CourseName = from z in db.Course2_CourseRecord
select z;
return ContentShape("Parts_Course", () => shapeHelper.Parts_Course(
CourseName.ToArray()));
}
}Ez pedig a hozzá tartozó View:
@model IEnumerable<Course2.Course2_CourseRecord>
<h2>Index</h2>
<ul>
@foreach (var item in Model)
{
<li>
@Html.Label(item.Name);
</li>
}
</ul>Lefordul és látszólag jónak tűnik. Az eredmény mégis egy tök üres oldal.
Szerinted mit nézek be? -
martonx
veterán
válasz
MrSealRD #2347 üzenetére
Mivel Orchard-hoz sosem csináltam plugint, így csak linkeket tudok küldeni, hátha valamelyiket még nem olvastad:
http://www.orchardproject.net/docs/?AspxAutoDetectCookieSupport=1
Itt a Working with Data szekciót javaslom. Az oldalakban vannak további hasznosnak tűnő linkek. Emellett használd ki, hogy az Orchard, és a pluginjai open source cuccok. Tölts le valami adatbáziskezelős plugint, és nézd meg a kódját, hogy ott hogyan oldották meg az adatok utaztatását.
-
válasz
martonx #2346 üzenetére
Csináltam sima MVC 3-as tutorial-okat, és ott gond nélkül ment az egész. Code-first/Model-first/Database-fist megoldásokat is már átlátom.
De amikor az itt használt megoldásokat akartam, Orchard alatt megoldani, akkor vagy egy sor sárga halált kaptam, vagy a View-ban semmi nem jelent meg.Mondjuk engem eleve megzavart,hogy a "klasszikus" MVC felépítés mellett az Orchard-os srácok bedobtak egy ilyen Driver nevezetű valamit, amire azt írják lényegében Controller funkciói vannak...szóval ez is kicsit zavaros.
A fentebb beírt ilyen Driverben van a Display metódus amit Override-olni kell, mert ez mondja meg a View-t, és hogy mit ad át neki. Azt, hogy hol akad el az "adat", nem tudom, mert hiába raktam breakpointokat az intellitrace semmit sem mutatott a kérdéses változókra.
Most nem tudok éppen, de holnap dobok olyan kódot, ami szerintem jó kellene, hogy legyen mégsem működik.
Amúgy átnézem amiket javasoltál.
-
martonx
veterán
válasz
MrSealRD #2345 üzenetére
rendben. Mivel az Orchard CMS ASP.NET MVC alapú, ezért mondjuk ha a www.asp.net/mvc (gondolom ez már nem újdonság) oldalon végigfutod a default tutorialt, akkor abban találni fogsz EF adatkötést.
Tehát a lényeg: EF-vel kellene megoldanod, szvsz ez illeszkedik legjobban az MVC desing patternhez.
EF használatát pedig az általam linkelt MSDN oldalon tanulhatod meg a legjobban, de ha jól érzem neked nem is az EF-fel van bajod (az általad várt lekérdezés a létező legegyszerűbb EF lekérdezés), hanem hogy hogy juttatod el az adatokat a view-ba?Vagy a view-ba el tudnád juttatni, csak pont az az egy sornyi EF nem megy?
-
válasz
martonx #2344 üzenetére
Egy kis mese:
~ 2 hónapja napi 5-6+ órában C#-t tanulok. ASP.NET-et,MVC-t...meg Orchard-ba modulfejlesztést úgy, hogy az utóbbiakat teljesen 0 szintről kezdtem. Szóval elhiheted, hogy mostanában a gugli a legjobb barátom.(Mivel mindenféle személyi segítség nélkül csinálom) Igazából pont nem, mert nekem a te linked nem dobta, ellenben adott pár másikat, amin oktatóvideók és egyéb nem rövid anyagok vannak mindez msdn-ről. Ettől függetlenül még kérhetek segítséget, mert nem mindegy, hogy egy problémát 2 nap alatt értek meg, vagy egy kis rávezetéssel 2 óra alatt. (Ezért is került fel több fórumra a kérdésem.) Tudod több szem többet lát...
Nem kértem, hogy bárki is guglizzon helyettem, hanem egy hozzáértő fejlesztő segítségét vártam, aki azt mondja, hogy igen ez egy LINQ lekérdezés lesz, vagy EF, vagy SQL-el lenne jobb...vagy más egyéb módon, és dob egy linket ahonnan megértem a módszert miért van úgy ahogy.
Ezzel azt szerettem volna elkerülni, hogy órákig rágjam át magam olyan anyagokon is amik nem relevánsak a számomra.
Persze írhattam volna egy kerettörténetet is, de gondoltam egy szakmai fórumon elég ha a nyers problémára szorítkozom.Amúgy ha nem segítesz szívesen, akkor ne tedd, mert az ilyesfajta lekezelős stílusra senkinek sincs szüksége, elhiheted.
-
martonx
veterán
válasz
st4rlight #2343 üzenetére
abszolút nem voltam beképzelt. Küldtem neki egy linket (hehe, az elsőt amit a gugli kidobott), és mint kiderült ő pont ilyet várt.
Vicces néha más helyett guglizni, és ezt talán picit éreztettem is, de ezt semmiképpen sem beképzeltségnek hívnám. Inkább jogos kritikának.
Akkor lettem volna beképzelt, ha csak annyit írok, hogy hagyj békén az ilyen pitiáner problémákkal, vagy gugli a barátod. -
martonx
veterán
válasz
MrSealRD #2340 üzenetére
devportálra is beírtam. Légyszi legalább annyi fáradtságot vegyél, hogy elolvasod az EF getting started részét. Kb. 5 perc és tudni fogod a választ.
Ráadásul hirtelen lesz EF jártasságod is. Hát nem megéri azt az 5 percet?Nézd itt az első oldal, rögtön van rajta példa kód is, nem is kell tovább olvasnod:
http://msdn.microsoft.com/en-us/library/aa697427%28v=vs.80%29.aspx
-
Üdv!
Orchard CMS-el kapcsolatban lenne szükségem segítségre.
Aki jártas LINQ,Entity Framework-ben az is lehet, hogy tud segíteni.Az Orchard a saját adatait SQL Server Compact 4.0 fájlalapú adatbázisban tárolja. Ehhez szabadon hozzá lehet adni tetszőleges táblákat...
Egy olyan modult készítettem hozzá ami képes Tanfolyamok adatait tárolni és megjeleníteni.
Az adatok lekérdezését végző metódus jelenleg egy tanfolyam adatait jeleníti meg.
CourseDriver.cs:using Course2.Models;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using System.Linq;
namespace Course2.Drivers
{
public class CourseDriver : ContentPartDriver<CoursePart>
{
protected override DriverResult Display(CoursePart part, string displayType, dynamic shapeHelper)
{
return ContentShape("Parts_Course", () => shapeHelper.Parts_Course(
Name: part.Name,
Target: part.Target,
Day: part.Day,
Hour: part.Hour,
Place: part.Place));
}Hozzá tartozó View - Course.cshtml:
<fieldset>
<legend>@Model.Name</legend>
<br />
<div class="display-label">Target: @Model.Target</div>
<br />
<div class="display-label">Day: @Model.Day</div>
<br />
<div class="display-label">Hour: @Model.Hour</div>
<br />
<div class="display-label">Place: @Model.Place</div>
</fieldset>Szeretnék egy olyan lekérdezést írni, ami a táblából kiolvassa az összes tanfolyam nevét...Van valami ötletetek?
Előre is kösz a segítséget.
-
-
amargo
addikt
Blend-et használ itt valaki?
Valamiért 2 tervezőnél sem akar működni megfelelően, egyszerűen control ráhúzása esetén nem dobja oda. Persze rálehet rakni, ha duplán rányomsz, akkor a balfelsőbe dobja és utána húzogatva is megy. De addig nem.
-
Boolash
aktív tag
Nem értem, hogy miért nem megy így. Csináltam egy Labelt, amit a Response részek előtt átírok (látszik a kódban). Ha kiveszem a Response részeket, akkor kattintás után látszik az eredmény, illetve tudok többet kattintani is, tehát nem a linkbuttonnal van a gond, hanem a response részekkel. De miért nem zárul le a response? Próbáltam Response.Close() , de az sem segít..
Nem találtam a neten más módszert a fájl letöltésre, viszont ha csak ez van, akkor ennek mennie kellene popup nélkül is. Popup megoldást csak végső esetben alkalmaznám... átadni azt a sok attribútumot (pl bináris kód), vagy még egy lekérdezés.. meg egy új ablak..
Nincs valami más lehetőség?
Köszi, hogy segítesz! -
Boolash
aktív tag
-
Lejárt az idő: de az is megoldás lehet, ha külön <form> közé kerül a gomb. Vagy egy kis popup ablakkal csinálod meg, hogy másik HTTP Handlert használjon.
A Response.End() már csak azért sem ideális, mert például a Response.Redirect már eleve lefuttatja és ha azzal használod, meg sem hívódik, mert már egy End() befejezte az oldal futtatását.
-
Boolash
aktív tag
Sziasztok,
Elakadtam egy problémával, remélem tudtok tippet adni.
VS2010-ben fejlesztek VisualWebPartot. Adatbázisba töltöttem fel fájlokat (binárisan tárolom) illetve a hozzá tartozó adatokat, és most ezeket szeretném kiolvasni, letölteni.
Indítottam egy Linq to Sql lekérdezést, mellyel megtaláltam a számomra érdekes elemeket. Ezeket egy Listába tárolom. Az egész lekérdezést a Page_Load -ban végzem, hogy az oldal betöltésekor már meglegyen ez a listám. Viszont nem szeretném, hogy ezt a lekérdezést többször is el kelljen végeznem, ezért Postback esetben nem végzem el ( if (!Page.IsPostBack))A Listát egy SPGridView-ban jelenítem meg. Az spgridview-ban lényegében a dokumentum neve és az ID-ja jelenik meg (egyedileg azonosítja).
A dokumentum nevét LinkButton-ban jelenítem meg. OnCommand() eseményre egy függvényt hív, melyben végzem el a letöltést, CommandArgument-ben elküldöm az adott ID-t.
<asp:TemplateField HeaderText="Név">
<ItemTemplate>
<asp:LinkButton
ID="LnkDownload"
runat="server"
Text='<%# Eval("Name")%>'
OnCommand="download"
CommandArgument='<%# Eval("ID")%>'>
</asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>A download metódus a cs-ben:
protected void download(Object sender, CommandEventArgs e)
{using (DataClasses1DataContext dc = new DataClasses1DataContext("Data Source=..."))
{
int a;
bool b = int.TryParse(e.CommandArgument.ToString(), out a);
Document d = doksik.Single(p => p.ID == a);Label1.Text = d.Name;
Response.Clear();
Byte[] bytes = (Byte[])d.BinaryData.ToArray();
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = d.MimeType.ToString();
Response.AddHeader("content-disposition", "attachment;filename="
+ d.Name.ToString());
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();}
}
Az SPGridview szépen megjelenik, benne a linkbutton is. Rákattintok, és le is tudom tölteni. Viszont a következő kattintás már nem lehetséges (se linkbuttonra se sima buttonra...). Olyan mintha a postback nem futna le...
Nem vagyok tökéletesen tisztában a működéssel, de szerintem van valahol egy ajax-os scriptmanager, mert ha próbálok egyet hozzáadni, akkor nem engedni, azt írja, hogy már van. Próbálkoztam updatepanelbe rakni, majd triggert állítani rá, de nem működött (ugyanaz).
Próbálkoztam response.redirect-el, de ez nem lenne jó, mert ilyenkor a linq lekérdezés is ismét lefutna...
Próbáltam postback hívással javascriptből, de nem történt változás..
Mi lehet a gond?
Köszönöm -
martonx
veterán
Sajnos mi ezernyi vonalon mozgunk (java, php, .net, vbscript), és a fő csapásirányunk nem is a fejlesztés (talán inkább a fejlesztetés alvállalkozókkal). Így aztán senki nem akar pusztán egy fejlesztő környezetre több száz K-t elkölteni. Az Express egyébként tényleg sok dologra elég.
-
válasz
martonx #2324 üzenetére
Nem elég jó indok, az Express is elég a legtöbb dologra. Ha meg egy cég .NET vonalon mozog, érdemes MS partnerként tevékenykedni (akár silver, akár gold). Ez még nem indok a 2.0-nál leragadásra, csak a vezetők ezek szerint nem értik meg, hogy nekik is jobb, ha fejlődnek a programozók.
-
válasz
ArchElf #2322 üzenetére
Bármit lehet frissíteni. A régi 2-es dolgokat nem bántja, ha kerül bele 3.0. IIS-nek nem fáj, más meg nem reklamál érte - hacsak az ügyfélnél nincs olyan policy, hogy .NET 2.0 fölötti verzió nem telepíthető, de ez meg maradiság.
Én is találkoztam olyan projekttel nem rég, ahol kerek-perec ki lett mondva, hogy csak 2.0 lehet a kódban, de indokolni nem tudták. Talán csak ahhoz értettek.
Manapság azért már illik a 2.0-t elhagyni szerintem.
-
-
v5k
csendes tag
Basszus.
Fél órája ezen agyalok, de még mindig nem jöttem rá, hogyan lehet egy tömb minden azonos elemét csak egyszer kiíratni. Tehát ha van egy tömböm a következő elemekkel: [0,1,4,2,5,24,42,5,1,4] akkor hogy lehet azt megoldani, hogy az 1-est és a 4-est csak egyszer mutassa a felhasználónak a program?
-
j0k3r!
őstag
hello!
lenne egy problemam, amit nem igazan ertek, hogy miert nem mukodik. adott egy tabla (registertable), amiben van egy elsodleges kulcsu mezom: uid, amit elvileg beallitottam ugy, hogy automatikusan noveljen az adatbazis (int tipusrol van szo: IsIdentity:Yes, Identity Increment:1, Identity Seed:10).
gyakorlaskepp megprobaltam volna hozzaadni egy par tesztadatot:RegisterLINQ2SQLDataContext dctx = new RegisterLINQ2SQLDataContext();
registertable r = new registertable
{
// uid = 6,
uname = "hfdsfdsedik",
uadmin = 0,
uaccstatus = 0,
uemail = "valadsamimas@valamdsaimas.hu",
upasswd = "proba12ds345",
uregdate = DateTime.Now
};
try
{
dctx.registertables.InsertOnSubmit(r);
dctx.SubmitChanges();
}
catch (Exception e)
{
Console.WriteLine("hiba: {0}", e.Message);
}
try
{
var v = from u in dctx.registertables
select new { u.uname, u.uregdate, u.uid };
foreach (var t in v) Console.WriteLine(t);
}
catch (NullReferenceException e)
{
Console.WriteLine("hiba: {0}", e.Message);
}
Console.ReadKey(true);a gond az, hogy ha nem kezzel allitom be az uid-t (kikapcsolom az Identity-t es a kikommentelt reszt is futni hagyom), akkor dob egy ilyet: (a mar meglevo adatok is igy kerultek be)
a kerdesem: mi a teendo?
elore is koszonom a segitseget.
-
st4rlight
csendes tag
válasz
martonx #2309 üzenetére
Code-behind az mint nevéből is adódik: mögöttes kód. XAML-nek van code-behindja. A másik eset, amikor sima .cs fájl van, na az csak simán code.
Nem, jól tudod, behavior-t csak code-ban lehet írni, XAML-ből nem, az felületleíró (de amit a végén úgyis .cs-be parszol a compiler), funkcionalitást ott nem lehet írni (ide nem keverendő az adatkötés, stb technika természetesen).
Aztán lehet, hogy mások máshogy hívják, de én különbséget teszek, elvégre egy konverter sem code-behind, de nekem így logikus.
A config fájl az konfig fájl és nem kód. Azt úgy hívjuk
-
martonx
veterán
válasz
st4rlight #2308 üzenetére
nem kötözködésképpen, de a behavior tulajdonképpen code-behind, nem?
Vagy akkor mit nevezünk code-behindnak, és mit nem? Én mindent, ami nem xaml (meg persze nem config fájl, azaz minden ami kód).
Vagy csak én nem tudok valamit jól, és lehet pusztán xaml-ben behaviort írni??? -
x007
tag
Én Behavior-t írnék, két ok miatt:
- designerrel (Blend) is könnyen rádobhatod a controllra
- újrafelhasználhatóságItt egy tutorial:
http://www.wpftutorial.net/Behaviors.html -
Karma
félisten
Mármint milyen objektumot akarsz velem leszármaztatni?
Egyébként ezt más ember nem fogja olvasni. Mondjuk ezzel a motivációval írta meg egy csimpánz eredetileg: WPF elemekből de WinFormsos (vagy inkább Delphis) logikával, millió+1 getter/setter hívás széthányva egyetlen MainWindow.xaml.cs állományban többezer soron át. Én leültem mindezt megcsinálni szépen, hiszen bugos is volt, javítani meg lehetetlen.
Szerk.: A javítással legalább értem mire gondolsz
Mindenki: azt hiszem tényleg ez lesz a holnapi program. A View osztályba belerakom ezt a kiválasztás-logikát, aztán remélem menni fog
Az eredetiben is volt ilyen (nem csoda), csak reméltem, hogy meg tudom oldani kevesebb kóddal.
-
amargo
addikt
Én sajnos több szempontból is a deklaratív megfogalmazást részesítem ilyenkor előnyben. Pedig az okosok azt mondják, hogy xamel-ben "minden" leírható. Ellenben, ha csapatban dolgozol egy másik kollégád lehet nem fogja érteni, hogy miért úgy van leírva.
Hozzáteszem, ha igazán szépen akarod megcsinálni - és később is szükséges a felhasználása -, akkor származtatod az objektumot és akkor mindenki tudja, hogy mire való vagy készítesz neki egy külön property-t, beszédesebb.
Új hozzászólás Aktív témák
Hirdetés
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Apple MacBook
- WoW avagy World of Warcraft -=MMORPG=-
- Google Pixel topik
- Home server / házi szerver építése
- Bambu Lab 3D nyomtatók
- Fenntartható, tartós kiegészítőket mutatott be a Fairphone
- Parfüm topik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Konzolokról KULTURÁLT módon
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- További aktív témák...
- DELL Precision 5540 Workstation i7-9850H Nvidia Quadro T1000 16GB 512GB 15.6 új akksi 1év garancia
- AKCIÓ! 6TB Seagate SkyHawk SATA HDD meghajtó garanciával hibátlan működéssel
- Zebra ZP505 EPL hőpapíros címkenyomtató
- AM 4 alaplapok! Kamatmentes rèszletre is!
- Lenovo T14 Thinkpad G2 FHD IPS i5-1145G7 vPro 4.4Ghz 16GB 512GB SSD Intel Iris XE Win11 Pro Garancia
Állásajánlatok
Cég: FOTC
Város: Budapest