asp.net mvc 3 jQuery of ajax probleem met @ Ajax.BeginForm ()

Ik werk aan een eenvoudig CMS-project en ik ben tegen een muur aangelopen. En na een heleboel uren, blies hij het op.

Om de een of andere reden activeerden mijn knoppen in @ Ajax.BeginForm de postback niet. Noch volledige postback noch ajax. Ik heb naar de scripts verwezen, en geprobeerd jQery te debuggen, onderzocht elk teken in de Controllers, Views, References and Models zonder succes. Er zijn geen fouten of uitzonderingen gegenereerd.

Controller actie:

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

Bekijk segment:

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

Fout:

    

Het parameterwoordenboek bevat een nulinvoer voor parameter 'ID' van niet-nullable type 'System.Int32' voor methode 'System.Web.Mvc.ActionResult Delete (Int32, Int32)' in 'Info3CRM.WebUI.Controllers. ClientController'. Een optionele parameter moet een referentietype zijn, een null-type of kan worden gedeclareerd als een optionele parameter.     Parameternaam: parameters

  

Eindelijk heb ik besloten om jQuery en Ajax uit te schakelen en normale postback te doen. Toen werd de uitzondering geworpen. Ik probeerde de Action in controller te bellen zonder alle benodigde parameters.

Mijn vraag aan iedereen is: Hoe zo'n uitzondering te vangen als jQuery en ajax zijn ingeschakeld?

1

2 antwoord

U zou deze fout kunnen zien in een soort debugging-tool aan de clientzijde.

Fiddler zou bijvoorbeeld het antwoord laten zien dat terugkwam van de server - en u kunt het WebView-tabblad van Fiddler gebruiken om zie de HTML-reactie. Het HTML-antwoord zou in dit geval het ASP.NET gele foutscherm weergeven.

Naast Fiddler kunt u ook browser-foutopsporingsprogramma's gebruiken die zijn ingebouwd in IE , Chrome of Opera - of download Firebug voor FireFox. Elke tool heeft een netwerktabblad die alle ajax-verzoeken en hun antwoorden toont.

1
toegevoegd
Geen probleem - blij dat ik kon helpen. ;)
toegevoegd de auteur nikmd23, de bron
Dank je!!! Geloof het of niet, ik gebruik Firebug al jaren, maar meestal alleen om CSS te repareren, en JS te proberen te zuiveren, ik ben nog niet helemaal naar de Net-tab gegaan .....
toegevoegd de auteur Zaak, de bron

Uw probleem is dat de actie die u POSTing verwacht een parameter genaamd ID te vinden, terwijl er geen dergelijke POST is. Als u de naam van de verborgen invoer wijzigt zodat deze overeenkomt met de naam van de parameter, zou alles goed moeten werken.

Dus, veranderen

@Html.Hidden("clientID", item.ClientID)

naar

@Html.Hidden("ID", item.ClientID)
0
toegevoegd
Ik weet dat nu wel, maar mijn probleem was dit uitzoeken. Omdat er geen uitzondering was, kon ik het probleem niet vinden. Hier is het duidelijk, in het oorspronkelijke probleem was de typfout i versus ì
toegevoegd de auteur Zaak, de bron