0

ASP.NET MVC は初めてです。私はVS2012でMVC4を扱っています。私はIDを取得し、すべて正常に動作しています。ajax コードで http リクエストを get から post に変更すると、500 エラーで失敗します。

質問 1 - この種の問題をデバッグするにはどうすればよいですか 2 - この特定のインスタンスでなぜそれが起こっているのですか

これは、ルーティングコードに何を含めるべきかを理解していないことに関係があると確信しています

私が重要だと思うコード

//the controller method
            [System.Web.Mvc.HttpPost]
        public void PostPatientAppointment(PatientAppointment patientAppointment)
        {
            init();
            updatePatientAppointmentList();

            foreach (PatientAppointment existingPatientAppointment in patientAppointments)
            {
                if (patientAppointmentConflict(existingPatientAppointment, patientAppointment ))
                {
                    throw new HttpException(409, "Conflict");   
                }
            }

            //return patientAppointment;
        }

function onMouseUp(evt) {
    rect = null;
    mouseDown = false;

    //check for conflicting appointments
    //do the xhr request
    //cycle through appointments looking for conflicts
    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                //open Dojo modal dialogue
                alert("will open dialogue");
            }
            else if( xmlhttp.status == 409)
            {
                alert("There is a conflict with that patient appointment");
            }
            alert("hmm - status was: " + xmlhttp.status );
        }
    }

    var patientAppointment = "{'identity':-1,'doctorId':-1,'patientId':-1,'patientName':null,'startTime':-1, 'endTime':-1,'location':null,'reason':null,'note':null,'recurrenceId':0,'appointmentTypeId':0,'patientShowedUp':false,'confirmed':false,'fullDayEvent':false}";
    xmlhttp.open("POST", "/api/PatientAppointment/", true);
    xmlhttp.send(patientAppointment);
}

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional}
        );
    }
}
4

1 に答える 1

0

ブラウザデバッガ内の[ネットワーク]タブを使用します。500が返されたら、応答本文を確認してください。エラーが含まれています。

この特定の例では、voidメソッドがあるので、何も返されません。これがActionResultまたはを返すことになってJsonResultいる場合は、クエリ文字列の最大長を超えているか(そうではないようです)HTTP GETJsonResult応答を許可していません。

于 2012-11-21T19:17:47.727 に答える