私はASP.net(およびプログラミング全般)を初めて使用しており、Web APIの構築には問題があります。具体的には、私はこれらの2つの領域での支援が必要な:私のDOCcontroller
新しいドキュメントを投稿する(DOCテーブル)を設定する方法ASP.NET Web APIを使用して多対多リレーションシップレットへのHTTP POST
- 。
- 実際のAjax投稿を作成する方法 -
EXT_GUID
パラメータを渡す際に問題があります。それが立つと、私は投稿しようとするとエラーになります。 "複数のパラメータ(docとparentOwner)をリクエストのコンテンツにバインドできません。"
これは、基本的には簡単な文書管理システムです。ユーザーが外部データベース(EXT_GUIDフィールド)からGUIDをフィルタ/パラメータとして指定することによって、Get/Postドキュメント(DOC)を作成します。各ドキュメントは複数のEXT_GUIDを持つことができ、各EXT_GUIDは複数のドキュメント(DOC)を持つことができます。 http投稿の前にEXT_GUIDフィールドが設定されていると仮定できます。
これは、これは私のモデルのセットアップでDOCcontrollerコード
//POST api/DOC
public HttpResponseMessage PostDOC(DOC doc, List<string> parentOwners)
{
if (ModelState.IsValid)
{
var parents = db.BIMs.Where(bx => parentOwners.Contains(bx.EXT_GUID));
foreach (var p in parents)
doc.Owners.Add(p);
db.DOCs.Add(doc);
db.SaveChanges();
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, doc);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = doc.Id }));
return response;
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
ある - EntityFramework codefirstもの
public class EXT
{
public int Id { get; set; }
public string EXT_GUID { get; set; }
public int ProjectID { get; set; }
public virtual ICollection<DOC> DOCs { get; set; }
}
public class DOC
{
public int Id { get; set; }
public int ProjectID { get; set; }
public string Subject { get; set; }
public string Link { get; set; }
public virtual ICollection<EXT> EXTs { get; set; }
}
これは、より多くのストレージモデル...
public StoreDBContext() : base("name=StoreDBContext")
{
}
public DbSet<EXT> EXTs { get; set; }
public DbSet<DOC> DOCs { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Set FLUENT API config for many to many here
modelBuilder.Entity<EXT>()
.HasMany(a => a.DOCs)
.WithMany()
.Map(x =>
{
x.MapLeftKey("EXT_Id");
x.MapRightKey("DOC_Id");
x.ToTable("EXTsDOCs");
});
}
AJAXコードであります
function AddDOC() {
var parentOwner = "{\"" + $('#txtaddEXT').val() + "\"}";
jQuery.support.cors = true;
var DOC = {
ProjectId: ProjectID,
Subject: $('#txtaddDOCSubject').val(),
Link: $('#txtaddDOCLink').val(),
parentOwner: parentOwner
};
$.ajax({
url: "http://localhost:54171/api/DOC/",
type: 'POST',
data: JSON.stringify(DOC),
contentType: "application/json;charset=utf-8",
success: function (data) {
WriteResponse(data);
},
error: function (x, y, z) {
alert(x + '\n' + y + '\n' + z);
}
});
}
だから、この男「ジョン・パパは」私がやろうとしていると、より多くいたものを説明チュートリアルを持っていました。ワークフローの説明は私の理解のレベル(そして学習へのコミットメント)には完璧でした。 http://pluralsight.com/training/Courses/TableOfContents/spa ビデオは6時間ですが、十分に価値があります。また、メンバーシップは本当に価値がありますが、トレイルにサインアップするとソースコードもダウンロードできます。 –
WebApiの複数のPOSTパラメータに関する問題について、以下を参照してください。http://forums.asp.net/t/1810709.aspx/1 –