webapiを使用してサーバーにデータを渡しています。フォーラムの人々のおかげで、もう1つのエンティティフレームワークと角度に基づいて1つのドロップダウンを埋めることができました。私が把握したいのは、WebAPIを使ってスクリーンデータをサーバーに戻す方法でした。角度のコードが、私はエラーを取得していますと呼ばれている新しい角度に。角度/ webapiを使用してサーバーにデータを戻そうとしています
:badreq「のHttp要求の設定がオブジェクトでなければなりません」
このエラーは、$ HTTP
に示し、それは示し、ここで私はオンラインの例を見つけました各HTMLコントロールで使用される親モデルを作成する機能。オンラインの例では、テキストボックスを使用していましたが、選択リストを使用していますが、これも機能するはずです。
私が間違っていることを教えてもらえますか?
私はそれを感謝します!
フォローアップ:私がこの時点で抱えている問題は、角度のsaveattributecontrollerのデータがUNDEFINEDと書かれているようです。だから、私が今のところ信じていない問題はwebapiへの呼び出しですが、HTMLの "Detail"から渡されていないデータです。
フォローアップ2:以下のLorenzoのコメントに基づいています。 Submitvaluateボタンの周りにattributevaluecrollerを置くことで、attribute.jsのsaveattributecontrollerに渡されたデータを見ることができます。また、saveattributecontrollerのData.AとData.Vを参照する必要があることもわかりました。しかし、今、WebAPIAttributeコントローラへの呼び出しは起こっていないようです。私は元々持っていた方法と以前に提案された方法の両方を試みましたが、コントローラへの呼び出しは決して通過しないようです。誰もそれで私を助けることができますか?
フォローアップ3:角度のjavascriptをステップ実行するとエラーが見つかりました。リソースが見つかりません。だから私はそれが何らかの理由でwebapiコントローラを見つけることではないと仮定しています。それはおそらく非常に単純なものですが、私はそれを見ていません。
var myapp = angular.module('attributeapp', []);
myapp.controller('attributecontroller', function ($scope, $http) {
$http.get('/Attribute/AttributeIndex/').then(function (response) {
$scope.Attributes = response.data;
})
})
myapp.controller('attributevaluecontroller', function ($scope, $http) {
$scope.getattributevalues = function (id)
{
$http.get('/Attribute/getattributevalues/' + id).then(function (response) {
$scope.A = id;
$scope.AttributeValues = response.data;
})
}
})
myapp.controller('saveattributecontroller', function($scope, $http){
$scope.attributesave = function (Data) {
var GetAll = new Object();
GetAll.AttributeKey = Data.AttributeKey;
GetAll.AttributeValueKey = Data.AttributeValueKey;
$http({
url: "WebAPIAttribute/attributesave",
dataType: 'json',
method: 'POST',
data: GetAll,
headers: {
"Content-Type": "application/json"
}
}).success(function (response) {
$scope.value = response;
})
.error(function (error) {
alert(error);
});
}
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="Scripts/angular.js"></script>
<script src="Scripts/attribute.js"></script>
</head>
<body data-ng-app="attributeapp">
<div data-ng-controller="attributecontroller">
<span data-ng-controller="attributevaluecontroller">
<select data-ng-model="detail.A" data-ng-change="getattributevalues(detail.A)" data-ng-options="Attribute.Attribute_Key as Attribute.Attribute_Desc for Attribute in Attributes"><option value="">--Select--</option></select><br />{{detail.A}}
<select data-ng-model="detail.V" data-ng-options="Attribute_Value.Attribute_Value_Key as Attribute_Value.Attribute_Value_Desc for Attribute_Value in AttributeValues"><option value="">--Select--</option></select>{{detail.V}}
</span>
<br />
<span data-ng-controller="saveattributecontroller">
<input type="button" value="submit" data-ng-click="attributesave(detail)"/>
</span>
</div>
</body>
</html>
//AttributeControler.cs
using System;
using System.Collections.Generic;
using MVC_APP1.Models;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace MVC_APP1.Controllers
{
public class AttributeController : Controller
{
//
// GET: /Attribute/
public ActionResult AttributeIndex()
{
Cafe_CPDEntities objEntity = new Cafe_CPDEntities();
var data = objEntity.Attributes.ToList();
return Json(data, JsonRequestBehavior.AllowGet);
}
public ActionResult getattributevalues(int id)
{
Cafe_CPDEntities objEntity = new Cafe_CPDEntities();
var data = objEntity.Attribute_Value.Where(m=>m.Attribute_Key==id);
//string test = data.FirstOrDefault().Attribute_Value_Desc;
return Json(data, JsonRequestBehavior.AllowGet);
}
public ActionResult attributesave(List<int> ReturnData)
{
return null;
}
}
}
// WebAPIAttributeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace MVC_APP1.Controllers
{
public class WebAPIAttributeController : ApiController
{
public class GetAll
{
public string AttributeKey { get; set; }
public string AttributeValueKey { get; set; }
}
[HttpPost]
public string attributesave(HttpRequestMessage request,
[FromBody] GetAll getAll)
{
return "Data Reached";
}
}
}
'$ httpをどうすればいいですか?post( "WebAPIAttribute/attributesave"、GetAll) '? – devqon
アプリケーションが作成するHTTP投稿要求を追加することもできますか。 – Alok
HTMLでattributesave(detail)をattributesave($ scope.detail)に変更するとどうなりますか? - あなたの行動でまだデータが未定義ですか? –