का उपयोग करके कई रिश्तों में HTTP पोस्ट HTTP मैं एएसपीनेट (और सामान्य रूप से प्रोग्रामिंग) के लिए नया हूं और मुझे वेब एपीआई बनाने में परेशानी हो रही है। अधिक विशेष रूप से मुझे इन दो क्षेत्रों में सहायता चाहिए:एएसपी.NET वेब एपीआई
- नया दस्तावेज़ (डीओसी तालिका) पोस्ट करने के लिए मेरे
DOCcontroller
को कॉन्फ़िगर कैसे करें। - वास्तविक AJAX पोस्ट कैसे करें - मुझे
EXT_GUID
पैरामीटर को पार करने में समस्या हो रही है। जैसा कि यह खड़ा है, जब मैं पोस्ट करने का प्रयास करता हूं तो मुझे एक त्रुटि मिलती है। "अनुरोध की सामग्री में एकाधिक पैरामीटर (डॉक्टर और पैरेंटऑनर) को बाध्य नहीं कर सकता।"
अनिवार्य रूप से यह एक साधारण दस्तावेज़ प्रबंधन प्रणाली के लिए है। मैं उपयोगकर्ता को एक बाहरी डेटाबेस (EXT_GUID फ़ील्ड) से एक फ़िल्टर/पैरामीटर के रूप में एक GUID आपूर्ति करके प्राप्त/पोस्ट दस्तावेज़ (डीओसी) प्राप्त करना चाहता हूं। प्रत्येक दस्तावेज़ में कई EXT_GUIDs हो सकती हैं और प्रत्येक EXT_GUID में एकाधिक दस्तावेज़ (डीओसी) हो सकते हैं। आप मान सकते हैं कि EXT_GUID फ़ील्ड्स जिन्हें हम http पोस्ट से पहले पॉप्युलेट करते हैं।
यह 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 यह छह घंटे का वीडियो है, लेकिन इसके लायक है। यदि आप किसी निशान के लिए साइन अप करते हैं तो भी आप स्रोत कोड डाउनलोड कर सकते हैं - हालांकि सदस्यता वास्तव में इसके लायक है। –
वेबएपी में एकाधिक पोस्ट पैरामीटर के साथ समस्याओं के बारे में निम्नलिखित पर नज़र डालें: http://forums.asp.net/t/1810709.aspx/1 –