1

MVC4 に Web API があります。ajax を使用してデータを投稿すると 404 が返されますが、その理由がわかりません。

言語コントローラー:

[AcceptVerbs("POST")]
public void Delete(string id)
{
    Guid guid = Guid.Parse(id);

    Language language = db.Languages.Find(guid);
    db.Languages.Remove(language);
    db.SaveChanges();

}

ルーティング:

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

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
        config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
    }
}

そしてJavaScript(AngularJSを使用):

this.delete = function (lang) {
    $http({
        method: "POST",
        url: "/api/language/delete",
        data: JSON.stringify({ id: lang.id })
    })
    .success(function (response) {
        return true;
    })
    .error(function (response) {
        return false;
    });
};

次のエラー メッセージが表示されます。

**{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:32166/api/language/delete'.","MessageDetail":"No action was found on the controller 'Language' that matches the request."}**

理由はわかりませんが、うまくいくようです。重要な情報が欠落しているように感じます。

4

2 に答える 2

0

コードpublic void Delete(string id)のファイル名は、「languageController」という名前にする必要があります。名前を確認してください

また、削除アクションを使用するより良い方法は、「投稿」ではなく「削除」にする必要があります

于 2013-08-09T11:07:24.340 に答える