मैं एक फार्म jQuery के माध्यम से उत्पन्न होता है कि है:jQuery के पद ASP.NET एपीआई नियंत्रक को
$.get("/api/get/getListItems", function (data) {
var table = "";
table += "<table>";
$.each(data, function (y, z) {
console.log(z);
table += '<tr>';
$.each(this, function (k, v) {
table += '<td><input type="text" name="' + k + '" id="' + k + '" value="' + v + '" /></td>';
});
table += '<td><input type="checkbox" name="selected" id="selected" /></td>';
table += '</tr>';
});
table += '<tr><td><input type="submit" id="submit" name="submit" value="Save To Database" /></td></tr>';
table += '</table>';
$('#form').html(table);
});
और यह इस एचटीएमएल (इनपुट फ़ील्ड 10 पंक्तियाँ, 7 कॉलम और 1 चेकबॉक्स) उत्पन्न करता है: http://jsfiddle.net/8zpr2fkL/1/
और मैं प्रपत्र जब सबमिट बटन पर क्लिक किया जाता है प्रस्तुत करने हूँ:
$("#form").submit(function (event) {
$.post("/api/update/", $("#form").serialize(), alert('success'));
});
अब मैं अपने ASP.NET एपीआई नियंत्रक करने के लिए डेटा गुजर रहा हूँ:
, कोशिकाओं 0 गिनती, कुछ मैं कर रहा हूँpublic class CellModel
{
public uint scheduleTaskID { get; set; }
public string task { get; set; }
public string baselineDate { get; set; }
public string scheduledDate { get; set; }
public string actualDate { get; set; }
public string finishedDate { get; set; }
public bool selected { get; set; }
public override string ToString()
{
return scheduleTaskID.ToString();
}
}
मेरे समस्या है जब मैं डेटा सबमिट करें और नियंत्रक विधि पर एक ब्रेकपाइंट डाल करने के लिए प्रस्तुत मारा वहाँ है:
[HttpPost]
public dynamic Post([FromBody]CellModel cells)
{
UpdateClass jobs = new UpdateClass();
return jobs;
}
और यहाँ मेरी CellModel वर्ग है यहाँ याद आ रही है? मैं इनपुट पाठ में सभी डेटा को नियंत्रक को पास करने की कोशिश कर रहा हूं। मेरे नियंत्रक को कुछ भी नहीं मिला है। मैं क्या गलत कर रहा हूं?
इस डेटा jQuery $ ('# प्रपत्र') के माध्यम से पारित करने के लिए कोशिश कर रहा im है क्रमानुसार():।
scheduleTaskID=194&task=Permit&baselineDate=6%2F23%2F2005+8%3A00%3A00+AM&scheduledDate=6%2F23%2F2005+8%3A00%3A00+AM&actualDate=6%2F23%2F2005+8%3A00%3A00+AM&finishedDate=&scheduleTaskID=195&task=Office+Files&baselineDate=7%2F13%2F2005+8%3A00%3A00+AM&scheduledDate=7%2F13%2F2005+8%3A00%3A00+AM&actualDate=7%2F13%2F2005+8%3A00%3A00+AM&finishedDate=&scheduleTaskID=196&task=Foundation&baselineDate=7%2F27%2F2005+8%3A00%3A00+AM&scheduledDate=7%2F27%2F2005+8%3A00%3A00+AM&actualDate=8%2F13%2F2005+8%3A00%3A00+AM&finishedDate=&scheduleTaskID=197&task=Framing&baselineDate=8%2F5%2F2005+8%3A00%3A00+AM&scheduledDate=8%2F5%2F2005+8%3A00%3A00+AM&actualDate=8%2F23%2F2005+8%3A00%3A00+AM&finishedDate=&scheduleTaskID=198&task=Finishes+Exterior&baselineDate=8%2F26%2F2005+8%3A00%3A00+AM&scheduledDate=8%2F26%2F2005+8%3A00%3A00+AM&actualDate=9%2F14%2F2005+8%3A00%3A00+AM&finishedDate=&scheduleTaskID=199&task=Drywall&baselineDate=9%2F2%2F2005+8%3A00%3A00+AM&scheduledDate=9%2F2%2F2005+8%3A00%3A00+AM&actualDate=9%2F16%2F2005+8%3A00%3A00+AM&finishedDate=&scheduleTaskID=200&task=Flooring&baselineDate=9%2F1%2F2005+8%3A00%3A00+AM&scheduledDate=9%2F1%2F2005+8%3A00%3A00+AM&actualDate=9%2F20%2F2005+8%3A00%3A00+AM&finishedDate=&scheduleTaskID=201&task=General+Finish&baselineDate=9%2F12%2F2005+8%3A00%3A00+AM&scheduledDate=9%2F12%2F2005+8%3A00%3A00+AM&actualDate=&finishedDate=&scheduleTaskID=202&task=Final+PDI&baselineDate=10%2F11%2F2005+8%3A00%3A00+AM&scheduledDate=10%2F11%2F2005+8%3A00%3A00+AM&actualDate=&finishedDate=&scheduleTaskID=203&task=Permit&baselineDate=4%2F6%2F2005+8%3A00%3A00+AM&scheduledDate=4%2F6%2F2005+8%3A00%3A00+AM&actualDate=4%2F6%2F2005+8%3A00%3A00+AM&finishedDate=
अद्यतन
मैं बदल गया है:
$("#form").submit(function (event) {
$.post("/api/update/", $("#form").serialize(), alert('success'));
});
$("#form").submit(function (event) {
var array = [];
$('#form > table > tbody > tr').each(function (elem) {
var item = {};
item.scheduleTaskID = $(this).find("td > #scheduleTaskID").val();
item.task = $(this).find("td > #task").val();
item.baselineDate = $(this).find("td > #baselineDate").val();
item.scheduledDate = $(this).find("td > #scheduledDate").val();
item.actualDate = $(this).find("td > #actualDate").val();
item.finishedDate = $(this).find("td > #finishedDate").val();
item.selected = $(this).find("td > #selected").val();
array.push(item);
});
console.log(JSON.stringify(array));
$.post("/api/update/", JSON.stringify(array), alert('success'), 'json');
});
मेरे कंसोल में अपने डेटा लॉग ऑन इस तरह दिखता है:
[{"scheduleTaskID":"203","task":"Permit","baselineDate":"4/6/2005 8:00:00 AM","scheduledDate":"4/6/2005 8:00:00 AM","actualDate":"4/6/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"195","task":"Office Files","baselineDate":"7/13/2005 8:00:00 AM","scheduledDate":"7/13/2005 8:00:00 AM","actualDate":"7/13/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"196","task":"Foundation","baselineDate":"7/27/2005 8:00:00 AM","scheduledDate":"7/27/2005 8:00:00 AM","actualDate":"8/13/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"197","task":"Framing","baselineDate":"8/5/2005 8:00:00 AM","scheduledDate":"8/5/2005 8:00:00 AM","actualDate":"8/23/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"198","task":"Finishes Exterior","baselineDate":"8/26/2005 8:00:00 AM","scheduledDate":"8/26/2005 8:00:00 AM","actualDate":"9/14/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"199","task":"Drywall","baselineDate":"9/2/2005 8:00:00 AM","scheduledDate":"9/2/2005 8:00:00 AM","actualDate":"9/16/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"200","task":"Flooring","baselineDate":"9/1/2005 8:00:00 AM","scheduledDate":"9/1/2005 8:00:00 AM","actualDate":"9/20/2005 8:00:00 AM","finishedDate":"","selected":"on"},{"scheduleTaskID":"201","task":"General Finish","baselineDate":"9/12/2005 8:00:00 AM","scheduledDate":"9/12/2005 8:00:00 AM","actualDate":"","finishedDate":"","selected":"on"},{"scheduleTaskID":"202","task":"Final PDI","baselineDate":"10/11/2005 8:00:00 AM","scheduledDate":"10/11/2005 8:00:00 AM","actualDate":"","finishedDate":"","selected":"on"},{"scheduleTaskID":"203","task":"Permit","baselineDate":"4/6/2005 8:00:00 AM","scheduledDate":"4/6/2005 8:00:00 AM","actualDate":"4/6/2005 8:00:00 AM","finishedDate":"","selected":"on"},{}]
और मेरे ASP.NET एपीआई नियंत्रक में, मैं इस के लिए मेरे तरीके को बदल दिया:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
public class UpdateController : ApiController
{
[HttpPost]
public dynamic Post(List<CellModel> cells)
{
UpdateClass jobs = new UpdateClass();
//jobs.PostScheduledTasks(cells);
return cells;
}
}
}
मैं के शुरू में एक ब्रेकपाइंट डाल विधि पोस्ट और जब यह ब्रेकपॉइंट हिट करता है, तो यह कहता है कि सेल गणना = 0..मैं नेटवर्क कॉल देखता हूं, केवल तभी जब मैं अपनी पोस्ट कॉल के बाद झूठी वापसी करता हूं और प्रतिक्रिया खाली होती है []
डेटा मेरे नियंत्रक को क्यों नहीं गुजर रहा है, क्या ऐसा इसलिए है क्योंकि फॉर्म jquery द्वारा उत्पन्न किया जा रहा है?
अद्यतन
फिर भी कोई समाधान नहीं है, मैं अपने नेटवर्क कॉल यह AM और स्थिति कोड को देखा 301 है:
क्या यह सेलमोडल्स की सूची नहीं होनी चाहिए? ऐसा लगता है कि आप 1 से अधिक वापस भेज रहे हैं ... यह समस्या को हल नहीं कर सकता है, लेकिन यह देखने के लिए कुछ ... –
हाँ मैं एक से अधिक भेज रहा हूं .... – user979331
कोशिश करने के लिए एक और चीज। क्या आपने अपनी पोस्ट से [FromBody] निकाला है? साथ ही, क्या वह डेटा फिडलर जैसे कुछ से उत्पन्न होता है? क्या नेटवर्क पर क्या हो रहा है? –