私はこの方法を持っているし、あなたが見ることができるように私はそれを修正:行をPUTメソッドで更新できません - MVC 4?
[HttpPut]
public HttpResponseMessage PutSIMSData(string langid, byte period, byte year, string data, int userId, SIMSData simsdata)//HttpRequestMessage req)
{
try
{
//SIMSData simsdata = new SIMSData();
//string jsonContent = req.Content.ReadAsStringAsync().Result;
//simsdata = JsonConvert.DeserializeObject<SIMSData>(jsonContent);
//SIMSData simsdata = db.SIMSDataDbSet.Find(langid, period, year);
if (ModelState.IsValid &&
simsdata.LanguageID == langid &&
simsdata.PeriodID == period &&
simsdata.YearID == year)
{
//simsdata.UserID = userId;
//simsdata.Data = data;
db.Entry(simsdata).State = EntityState.Modified;
db.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK, simsdata);
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest, simsdata);
}
}
catch (Exception e)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
}
}
しかし、問題がある、私はエラー500、私はすでにテーブルに存在するキーの組み合わせを持つ行を挿入しようとしていますすなわちを得続けます。
私のテーブルは複合キーテーブルで、3つのキー、LanguageID、PeriodID、YearID、DataおよびUserIdは、更新する必要のあるフィールドです。
私のAJAX呼び出しは次のようになります。私は間違って何をやっている
updateSIMSDataWithAllParams: function (lang, period, year, data, userId) {
jq.ajax({
context: simsDataView,
contentType: 'application/json; charset=utf-8',
type: "PUT",
url: "/api/SIMSData",
dataType: "json",
data: JSON.stringify({
LanguageID: lang,
PeriodID: period,
YearID: year,
Data: data,
UserID: userId
}),
beforeSend: function (jqXHR, settings) {
simsDataView.setStatusMsg(messages.listingTreeDataMsg, "blue");
},
success: function (data, textStatus, jqXHR) {
},
error: function (jqXHR, textStatus, errorThrown) {
errorsMsgTxt.text("SIMS Tree: " + textStatus + ". Error: " + errorThrown + " ");
}
});
},
?
あなたは 'simsdata = db.SIMSDataDbSet.Find(LANGID、期間、年)を使用する場合appens何;'?また、私はなぜ 'simsdata'が関数のパラメータであるのか理解していません。 – OmarMuscatello
'if 'ブロックは決して実行されません(' langid'、 'period'、' year'の値は決して値を送信しないので、常にデフォルトになります) –
私は送信しないとどういう意味ですか?それらは、ajax呼び出し、データオブジェクトを確認してください – Vlad