asp.net mvc 3 jquery sau ajax cu @ Ajax.BeginForm ()


Lucrez la un proiect CMS simplu și am fugit într-un zid. Și după
o mulțime de ore, a explodat.


Din anumite motive, butoanele din *@ Ajax.BeginForm* nu
au activat postback-ul. Nici postback complet nici ajax. Am facut
referire la scripturi si am incercat sa depanam jQery, examinand
fiecare caracter din *Controlere, Viziuni, Referinte si
Modele* fara nici un rezultat. Nu au fost aruncate erori sau
excepții.


Controler action:



```
[HttpPost]
public ActionResult Delete(int ID,int page=1)
{
  //some code...
  //...work, work, work...
}

```

Vizualizați segmentul:



```
@using (Ajax.BeginForm("Delete", "Client", new { page = Model.CurrentPageIndex }, ao))
{
    @Html.Hidden("clientID", item.ClientID)
    <input type="submit" value="Briši" name="brisi" />
}

```

Eroare:



> 
> 
> >     
> > Dicționarul de parametri conține o intrare nulă pentru
> > parametrul "ID" de tip non-nullabil "System.Int32" pentru metoda
> > "System.Web.Mvc.ActionResult Delete (Int32, Int32)" în
> > "Info3CRM.WebUI.Controllers. ClientController“. Un parametru
> > opțional trebuie să fie un tip de referință, un tip nullabil sau să
> > fie declarat ca parametru opțional.     Nume
> > parametru: parametrii
> > 
> > 
> >   
> 
> 
> 


În cele din urmă am decis să dezactivez [jQuery](/tag5761) și Ajax și să fac postback normal. Apoi,
excepția a fost aruncată. Încercam să numesc Acțiunea în controler
fără toți parametrii necesari.


Întrebarea mea la toate este: Cum să prindeți o astfel de
excepție dacă [jQuery](/tag5761) și ajax sunt
activate?
Ați putea vedea această eroare într-un instrument de depanare a
unui client.


De exemplu, [Fiddler](https://www.fiddler2.com/) vă va arăta răspunsul care a revenit de la
server - și puteți utiliza fila WebFiew a Fiddler consultați
răspunsul HTML. Răspunsul HTML în acest caz vă va arăta ecranul de
eroare galben ASP.NET.


În plus față de fișierul Fiddler, puteți utiliza, de asemenea,
instrumente de depanare a browserului care se integrează în IE ,
Chrome sau Opera sau puteți descărca [Firebug](https://getfirebug.com/) pentru FireFox.
Fiecare instrument are o filă de rețea care vă va arăta toate
solicitările ajax și răspunsurile acestora.
Valoarea returnată de o tratare a evenimentului determină dacă sau nu browser-ul implicit comportamentul ar trebui să aibă loc la fel de bine. În cazul clic pe link-uri, acest lucru ar fi urmatoarele link-ul, dar diferenta este cel mai vizibil în formă prezinte stivuitoare, unde puteți anula o formă de transmitere în cazul în care utilizatorul a făcut o greșeală introducerea informațiilor.


Eu nu't cred că există o W3C caietul de sarcini pentru acest lucru. Toate vechi JavaScript interfețe de acest gen au fost dat porecla "DOM 0", și sunt în mare parte nespecificată. Poate ai noroc de lectură vechi de Netscape 2 documentare.


Modul modern de realizare a acestui efect este de a apela eveniment.preventDefault()`, și acest lucru este specificat în [DOM 2 Evenimente caietul de sarcini](https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation). Va trebui să faceți acest lucru în JavaScript în timpul evenimentului onLoad. Verificați atributul crmForm.FormType și apoi dezactivați câmpul dacă este „2“.



```
if (crmForm.FormType == 2)
{
   crmForm.all.fieldname.disabled=true;
}

``` se dezactiveaza cu totul. Principalele avantaje ale **ASP.net MVC** sunt:


1. Permite controlul complet asupra prestate HTML.
2. Oferă curat separarea preocupărilor(SoC).
3. Permite [Test Driven Development (TDD)](https://en.wikipedia.org/wiki/Test-driven_development).
4. Integrare ușoară cu cadre JavaScript.
5. În urma design de apatrid natura web.
6. Odihnitor url-uri care permite SEO.
7. Nu ViewState și PostBack evenimente


Principalul avantaj al **ASP.net Formularul Web** sunt:


1. Acesta oferă [RAD](https://en.wikipedia.org/wiki/Rapid_application_development) dezvoltarea
2. Ușor model de dezvoltare pentru dezvoltatorii de cei care vin din winform de dezvoltare. incearca sa dezactivezi imessage si facetime. Mă aștept răspunsul real este pur și simplu: nu a fost un bun exemplu de utilizare. Pentru cazuri, avantajul este acela că permite o fluente API asupra tipurilor existente (care nu se furnizează logica) - și anume



```
var foo = data.Where(x=>x.IsActive).OrderBy(x=>x.Price).First();

```

care permite LINQ:



```
var foo = (from x in data
           where x.IsActive
           order by x.Price
           select x).First();

```

Cu metode statice, acest lucru pur și simplu nu este o problemă, astfel încât nu există nici o justificare; doar utiliza metoda statică pe al doilea tip.


Așa cum este, metodele de extensie nu sunt *corect* obiect orientate - ele sunt un abuz pragmatic pentru a face viața mai ușoară în detrimentul purității. Nu a fost nici un motiv pentru a dilua metode statice în același mod. repornește dispozitivul Nu sunt sigur dacă ajută (am găsit Documentația ccnet oarecum inutil uneori):


[Utilizarea CruiseControl.NET cu MSTest](http://confluence.public.thoughtworks.org/display/CCNET/Using+CruiseControl.NET+with+MSTest) intra la setari si dupa la setari de siguranta Cred că soluția de kgiannakakis este foarte bun. Vreau doar să adăugați câteva detalii, deoarece citind comentariul lui Agustí-N am suspectul care poate fi el lipseste ceva.


Să presupunem că aveți **UsersServlet** descris de kgiannakakis, un jsp numit **showUserProfile.jsp** și un **userBean** care are toate proprietățile profilului utilizatorului necesare pentru a fi afișate în jsp.


Atunci când un nou utilizator se înregistrează la cererea dumneavoastră, trebuie să faci nimic mai mult decât tine deja acum. Doar înregistra un utilizator nou în db, și **uitați servletul de conectare** .


Acum , să presupunem că am înregistrat la aplicația cu numele de utilizator **alexmeia** .


Când cineva cifre adresa URL *yourapp / Users / alexmeia* **UsersServlet se numește** . Acest servlet devine alexmeia numele de utilizator de la adresa URL de solicitare, controale în PB în cazul în care există acest nume de utilizator și dacă există **încărca toate proprietățile acestui utilizator în userBean** .


După aceea, transmite **showUserProfile.jsp** , care arată profilul de utilizator citit - o din userBean.


Evident, în cazul în care alexmeia utilizator nu este în Db, puteți redirecționa către un userNotFound.jsp generic, sau du-te la pagina de start și arată un mesaj și așa mai departe ...


Aceasta funcționează pentru toți utilizatorii înregistrați în același mod. Nu aveți nevoie pentru a crea cu adevărat o adresă URL reală nouă pentru fiecare utilizator nou.