OK、私は .NET MVC3 をまったく使用したことがなく、問題に遭遇しました。
Jquery モバイルを使用してモバイル アプリケーションを開発しており、モバイル アプリケーションから Web ページにデータを送信したいと考えています。サーバーにはこれがあります:
[HttpPost]
[ValidateInput(true)]
public ActionResult Save(FormCollection actionValues) {
int age = Int32.Parse(actionValues["age"]);
string fn = actionValues["first_name"];
string ln = actionValues["last_name"];
CreateAndStorePersonModel(age,fn,ln); // Dummy method, not important
return new HttpStatusCodeResult(200); // Thanks to 3nigma for this
}
私が欲しいのは、actionValues を取得してモデルに保存し、このモデルをデータベースに保存できるようにすることです。この例では、属性「first_name、last_name、age」を持つ「Person」を保存すると仮定します。また、将来このモデルを拡張する可能性があります。
モバイル アプリから次のコードを実行します。
$.ajax({
type: "POST",
url: "http://external.url/Save",
dataType: "json",
traditional: true, // default serialization (do I even need this?)
data: {
"age": data_age,
"first_name": data_fn,
"last_name": data_ln,
},
success: function(d) { alert("Success: "+d},
}).error(function(data, errorTxt, jqXHR) {
alert('Error: '+errorTxt);
});;
500 内部エラーが発生しましたが、3nigma のおかげでこれはなくなりました。
編集:
Web サーバーからテストすると、インスペクターをチェックすると http 302 "Found" が表示されますが、データは保存されません。携帯電話にコンパイルするとき、.error ハンドラは「parseerror」で inn をキックしますが、データは保存されます。理由はありますか?
答え:
302 "Found" は、ビューを返したためです (3nigma のおかげです)。これを返す必要があります。
return new HttpStatusCodeResult(200);