9
我是ASP.net(以及一般編程)的新手,並且在構建Web API時遇到問題。更具體地說,我需要以下兩方面的幫助:使用ASP.NET Web API進行多對多關係的HTTP POST
- 如何配置我的
DOCcontroller
以發佈新文檔(DOC表)。 - 如何製作實際的ajax文章 - 我無法通過
EXT_GUID
參數。按照現狀,我在嘗試發佈時遇到錯誤。 「無法將多個參數(doc和parentOwner)綁定到請求的內容。」
本質上這是一個簡單的文件管理系統。我想通過讓用戶從外部數據庫(EXT_GUID字段)提供GUID作爲過濾器/參數來獲取/發佈文檔(DOC)。每個文檔可以有多個EXT_GUID,每個EXT_GUID可以有多個文檔(DOC)。你可以假設我們在http post之前填充了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 這是六個小時的視頻,但非常值得。你也可以下載源代碼,如果你註冊一個線索 - 雖然會員真的值得。 –
看看在多的WebAPI POST參數以下有關問題:http://forums.asp.net/t/1810709.aspx/1 –