asp.net-mvc – AngularJS $http.put不能与ASP.NET MVC控制器一
发布时间:2020-12-16 09:55:23 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试创建一个简单的页面,我使用$http.put将一些数据发送到服务器. 脚本代码 scriptvar myApp = angular.module("myApp",[]);myApp.controller("HttpPostController",function ($scope,$http) { $scope.SendHttpPostData = function () { var data = $.
我正在尝试创建一个简单的页面,我使用$http.put将一些数据发送到服务器.
脚本代码 <script> var myApp = angular.module("myApp",[]); myApp.controller("HttpPostController",function ($scope,$http) { $scope.SendHttpPostData = function () { var data = $.param({ firstName: $scope.firstName,lastName: $scope.lastName,age : $scope.age }); $http.put('/ServerRequest/PutDataResponse',data) .success(function (data,status,headers,config) { $scope.ServerResponse = data; }) .error(function (data,header,config) { $scope.ServerResponse = htmlDecode("Data: " + data + "nnnnstatus: " + status + "nnnnheaders: " + header + "nnnnconfig: " + config); }); }; });</script> 我的HTML代码 <div ng-app="myApp" ng-controller="HttpPostController"> <form ng-submit="SendHttpPostData()"> <p>First Name: <input type="text" name="firstName" ng-model="firstName" required /></p> <p>Last Name: <input type="text" name="lastName" ng-model="lastName" required /></p> <p>Age : <input type="number" name="age" ng-model="age" required /></p> <input type="submit" value="Submit" /> <hr /> {{ ServerResponse }} </form></div> ASP.NET MVC控制器动作方法 [HttpPut] public ContentResult PutDataResponse(string firstName,string lastName,int age) { return Content("First name: " + firstName + " | Last name: " + lastName + " | Age: " + age + " | Request Type: " + Request.RequestType.ToString()); } 我收到的错误消息如下 TTP错误404.0 – 未找到您要查找的资源已被删除,名称已更改或暂时不可用.最有可能的原因:Web服务器上不存在指定的目录或文件.该网址包含印刷错误.自定义筛选器或模块(如URLScan)限制对文件的访问.您可以尝试的事项:在Web服务器上创建内容.查看浏览器URL.检查失败的请求跟踪日志,并查看哪个模块正在调用SetStatus. 所以在ASP.NET MVC中它不起作用. (POST和GET工作).我尝试使用ASP.NET MVC Web API,它运行正常.我能够使用mvc web api的PUT方法发送和接收响应. 问题是为什么它在ASP.NET MVC中不起作用,即使方法动词是[HttpPut]. 谢谢 解决方法
好的,经过多方努力,我找到了解决方案.实际上,问题是默认情况下ASP.NET MVC不允许“PUT”或“DELETE”请求类型,因此我们需要在web.config文件中启用它们,如下所示.
<system.webServer> <modules> <remove name="FormsAuthentication" /> <remove name="FormsAuthenticationModule" /> </modules> <handlers> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <remove name="OPTIONSVerbHandler" /> <remove name="TRACEVerbHandler" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer> 请注意ExtensionlessUrlHandler-Integrated-4.0处理程序.这有所不同.这允许所有类型的动词都可以接受,因此即使PUT请求现在也适用于ASP.NET MVC. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – 是否需要StructureMap HttpContextScoped
- asp.net – 如何添加jQuery UI按钮图标到输入按钮?
- asp.net – 如何获取Silverlight XAP复制到客户端上的构建
- asp.net-mvc – 使用Url.action调用控制器方法时,只有第一个
- asp.net-web-api – 如何从Web API获取IObservable
- asp.net-mvc – asp mvc使用View Model在视图中列出产品详细
- 为什么我得到“线程被中止”在asp.net?
- 在.NET Core中处理一个接口多个不同实现的依赖注入问题
- 实体框架 – Asp.Net Web API错误:’ObjectContent`1’类型
- 哪些ASP.NET生命周期事件可以异步?
推荐文章
站长推荐
- asp.net-mvc-3 – 如何格式化MVC Route参数?
- asp.net – Telerik RadGrid – 如何默认编辑模式
- ASP.NET多线程如何?
- asp.net – 调用SqlMembershipProvider GetUser的
- 从经典ASP中的函数返回记录集
- 如何在不提交的情况下触发ASP.NET客户端验证?
- asp.net-mvc – 让RouteDebugger在404页面上工作
- asp.net-mvc – 模型本身应该进行一些计算吗?
- asp.net-mvc – @ Html.ActionLink如何添加一个查
- asp.net – JObject.Parse与JsonConvert.Deseria
热点阅读