কীভাবে জেনসন পিওএসটি ডেটাটিকে একটি আইপিএল পদ্ধতিতে ওয়েব এপিআই পদ্ধতিতে পাস করবেন?


304

এএসপি.নেট এমভিসি 4 ওয়েব এপিআই অ্যাপ্লিকেশন গ্রাহককে বাঁচানোর জন্য পোস্ট পদ্ধতিটি সংজ্ঞায়িত করে। গ্রাহক পোস্টের অনুরোধের বডিটিতে জেসন ফর্ম্যাটে উত্তীর্ণ হয়েছে। পোস্ট পদ্ধতিতে গ্রাহক প্যারামিটারে বৈশিষ্ট্যগুলির জন্য নাল মান রয়েছে।

এটি কীভাবে ঠিক করবেন যাতে পোস্ট করা ডেটা গ্রাহক অবজেক্ট হিসাবে চলে যায়?

সম্ভব হলে বিষয়বস্তুর ধরণ: অ্যাপ্লিকেশন / x-www-form-urlencoded ব্যবহার করা উচিত যেহেতু জাভাস্ক্রিপ্ট পদ্ধতিতে কীভাবে পোস্ট করা যায় তা কীভাবে এটি পরিবর্তন করতে হয় তা আমি জানি না।

নিয়ন্ত্রক:

public class CustomersController : ApiController {

  public object Post([FromBody] Customer customer)
        {
            return Request.CreateResponse(HttpStatusCode.OK,
            new
            {
                customer = customer
            });
        }
    }
}

public class Customer
    {
        public string company_name { get; set; }
        public string contact_name { get; set; }
     }

অনুরোধ:

POST http://localhost:52216/api/customers HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded; charset=UTF-8

{"contact_name":"sdfsd","company_name":"ssssd"}

উত্তর:


525

সম্পাদনা : 31/10/2017

একই কোড / অ্যাপ্রোচ Asp.Net কোর 2.0 এর জন্যও কাজ করবে । প্রধান পার্থক্যটি হ'ল, এসপ নেট কোরে, ওয়েব এপিআই কন্ট্রোলার এবং এমভিসি নিয়ন্ত্রক উভয়ই একক নিয়ামক মডেলটিতে একত্রিত হয়েছে। সুতরাং আপনার রিটার্নের ধরন IActionResultবা এর বাস্তবায়নগুলির মধ্যে একটি হতে পারে (প্রাক্তন OkObjectResult:)


ব্যবহার

contentType:"application/json"

আপনি JSON.stringifyএটি পাঠানোর সময় এটিকে JSON স্ট্রিংয়ে রূপান্তর করতে আপনার পদ্ধতি ব্যবহার করতে হবে,

এবং মডেল বাইন্ডার আপনার শ্রেণীর অবজেক্টে জসন ডেটা বাঁধবে।

নীচের কোডটি সূক্ষ্মভাবে কাজ করবে (পরীক্ষিত)

$(function () {
    var customer = {contact_name :"Scott",company_name:"HP"};
    $.ajax({
        type: "POST",
        data :JSON.stringify(customer),
        url: "api/Customer",
        contentType: "application/json"
    });
});

ফলাফল

এখানে চিত্র বর্ণনা লিখুন

contentTypeসম্পত্তি সার্ভারকে বলে যে আমরা JSON ফর্ম্যাটে ডেটা প্রেরণ করছি। যেহেতু আমরা একটি JSON ডেটা কাঠামো প্রেরণ করেছি, তাই মডেল বাইন্ডিং সঠিকভাবে ঘটবে।

আপনি যদি এজাক্স অনুরোধের শিরোনামগুলি পরিদর্শন করেন তবে আপনি দেখতে পাচ্ছেন যে Content-Typeমানটি সেট করা আছে application/json

আপনি যদি স্পষ্টভাবে কনটেন্ট টাইপ নির্দিষ্ট না করে থাকেন তবে এটি ডিফল্ট সামগ্রী প্রকারটি ব্যবহার করবে application/x-www-form-urlencoded;


মন্তব্যে উত্থাপিত অন্যান্য সম্ভাব্য সমস্যাগুলির সমাধান করতে নভেম্বর 2015 এ সম্পাদনা করুন

একটি জটিল বিষয় পোস্ট করা

ধরা যাক আপনার ওয়েব এপিআই অ্যাকশন পদ্ধতির প্যারামিটার হিসাবে আপনার কাছে একটি জটিল ভিউ মডেল বর্গ রয়েছে class

public class CreateUserViewModel
{
   public int Id {set;get;}
   public string Name {set;get;}  
   public List<TagViewModel> Tags {set;get;}
}
public class TagViewModel
{
  public int Id {set;get;}
  public string Code {set;get;}
}

এবং আপনার ওয়েব এপিআই শেষ পয়েন্ট মত

public class ProductController : Controller
{
    [HttpPost]
    public CreateUserViewModel Save([FromBody] CreateUserViewModel m)
    {
        // I am just returning the posted model as it is. 
        // You may do other stuff and return different response.
        // Ex : missileService.LaunchMissile(m);
        return m;
    }
}

এই লেখার সময়, এএসপি.এনইটি এমভিসি 6 হ'ল সর্বশেষতম স্থিতিশীল সংস্করণ এবং এমভিসি 6 এ, ওয়েব এপিআই কন্ট্রোলার এবং এমভিসি উভয় নিয়ামকই Microsoft.AspNet.Mvc.Controllerবেস বর্গ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত ।

ক্লায়েন্ট পক্ষ থেকে পদ্ধতিতে ডেটা প্রেরণ করতে, নীচের কোডটি ঠিকঠাক কাজ করা উচিত

//Build an object which matches the structure of our view model class
var model = {
    Name: "Shyju",
    Id: 123,
    Tags: [{ Id: 12, Code: "C" }, { Id: 33, Code: "Swift" }]
};

$.ajax({
    type: "POST",
    data: JSON.stringify(model),
    url: "../product/save",
    contentType: "application/json"
}).done(function(res) {       
    console.log('res', res);
    // Do something with the result :)
});

মডেল বাইন্ডিং কিছু বৈশিষ্ট্যের জন্য কাজ করে, তবে সমস্ত নয়! কেন?

আপনি যদি ওয়েব এপিআই পদ্ধতি প্যারামিটারকে [FromBody]অ্যাট্রিবিউট দিয়ে সাজান না

[HttpPost]
public CreateUserViewModel Save(CreateUserViewModel m)
{
    return m;
}

এবং মডেলটি প্রেরণ করুন (কাঁচা জাভাস্ক্রিপ্ট অবজেক্ট, জেএসএন ফর্ম্যাটে নয়) কনটেন্ট টাইপ সম্পত্তি মান উল্লেখ না করে

$.ajax({
    type: "POST",
    data: model,
    url: "../product/save"
}).done(function (res) {
     console.log('res', res);
});

মডেল বাইন্ডিং মডেলের ফ্ল্যাট বৈশিষ্ট্যের জন্য কাজ করবে, যেখানে প্রকারটি জটিল / অন্য ধরণের বৈশিষ্ট্য নয়। আমাদের ক্ষেত্রে, Idএবং Nameবৈশিষ্ট্যগুলি সঠিকভাবে প্যারামিটারে আবদ্ধ থাকবে m, তবে Tagsসম্পত্তিটি খালি তালিকা হবে।

আপনি যদি সংক্ষিপ্ত সংস্করণটি $.postব্যবহার করেন তবে অনুরোধটি প্রেরণ করার সময় এটি ডিফল্ট সামগ্রী-প্রকারটি ব্যবহার করবে যদি একই সমস্যা দেখা দেয় ।

$.post("../product/save", model, function (res) {
    //res contains the markup returned by the partial view
    console.log('res', res);
});

4
আমি কী করেছি তা নিশ্চিত নয়, তবে আমি এই সকালে ফিরে এসে একই নৌকায় ফিরে এসেছি। নিয়ামকটিতে অবজেক্টটি শূন্য। এখানে আমরা আবার এলওএল
গ্রেসন

1
আপনি ফিজার ব্যবহার করার সময় বিষয়বস্তুর ধরণটি "সামগ্রী-ধরণ: অ্যাপ্লিকেশন / জেসসন" লেখা আছে তা নিশ্চিত করুন। চিয়ার্স!
ioWint

1
আপনি কেবল আমার কাজের দিনটি সমাধান করেছেন !!! এই ছোট্ট ফাংশনটি "JSON.stringify (ডেটা)" তৈরি করেছে!
গিল অ্যালেন

1
মনে রাখবেন যে আপনি যদি এটি করেন (কন্টেন্ট-টাইপ শিরোনাম পরিবর্তন করুন) এবং আপনি একটি CORS অনুরোধ করছেন, jQuery সার্ভারটি পরিচালনা করতে হবে এমন আপনার পোস্টের আগে প্রিফলাইট অপশন অনুরোধ যুক্ত করা শুরু করবে।
সালিশ

1
জটিল ধরণের সমস্যার কারণে আমার মনে হয় কেবল 'কন্টেন্ট টাইপ:' অ্যাপ্লিকেশন / জেসন 'নির্দিষ্ট করার অভ্যাস ছিল; এবং জসন জেএস বস্তুকে আরও শক্তিশালী করে এবং তারপরে [ফ্রমবিডি] বৈশিষ্ট্যটি ব্যবহার করার দরকার নেই।
জর্পটোকোড

69

ওয়েবেপিতে পোষ্টের সাথে কাজ করা মুশকিল হতে পারে! ইতিমধ্যে সঠিক উত্তর যুক্ত করতে চাই ..

জিইটি নিয়ে কাজ করা তুচ্ছ বলে পোষ্টের দিকে বিশেষভাবে মনোনিবেশ করবে। আমি মনে করি না যে অনেকে জিইটি-র সাথে ওয়েবপিস দিয়ে কোনও সমস্যার সমাধানের জন্য আশেপাশে অনুসন্ধান করবে। যাইহোক ..

যদি আপনার প্রশ্নটি হয় - এমভিসি ওয়েব এপিতে, কীভাবে- - জেনেরিক এইচটিটিপি ক্রিয়াগুলি বাদে কাস্টম অ্যাকশন পদ্ধতির নামগুলি ব্যবহার করবেন? - একাধিক পোস্ট সম্পাদন করবেন? - একাধিক সরল ধরণের পোস্ট? - jQuery মাধ্যমে জটিল ধরনের পোস্ট?

তাহলে নিম্নলিখিত সমাধানগুলি সাহায্য করতে পারে:

প্রথমত, ওয়েব এপিআইতে কাস্টম অ্যাকশন পদ্ধতিগুলি ব্যবহার করার জন্য , একটি ওয়েব এপিআই রুট হিসাবে যুক্ত করুন:

public static void Register(HttpConfiguration config)
{
    config.Routes.MapHttpRoute(
        name: "ActionApi",
        routeTemplate: "api/{controller}/{action}");
}

এবং তারপরে আপনি এ্যাকশন পদ্ধতিগুলি তৈরি করতে পারেন যেমন:

[HttpPost]
public string TestMethod([FromBody]string value)
{
    return "Hello from http post web api controller: " + value;
}

এখন, আপনার ব্রাউজার কনসোল থেকে নিম্নলিখিত jQuery ফায়ার করুন

$.ajax({
    type: 'POST',
    url: 'http://localhost:33649/api/TestApi/TestMethod',
    data: {'':'hello'},
    contentType: 'application/x-www-form-urlencoded',
    dataType: 'json',
    success: function(data){ console.log(data) }
});

দ্বিতীয়ত, একাধিক পোস্ট সম্পাদন করার জন্য , এটি সহজ, একাধিক ক্রিয়া পদ্ধতি তৈরি করুন এবং [এইচটিটিপিপোস্ট] বৈশিষ্ট্য সহ সজ্জিত করুন। কাস্টম নাম ইত্যাদির জন্য [অ্যাকশননাম ("আমারএকশন")] ব্যবহার করুন নীচের চতুর্থ পয়েন্টে jQuery এ আসবেন

তৃতীয়ত, প্রথমত, একক ক্রিয়ায় একাধিক সিমপ্লে প্রকারগুলি পোস্ট করা সম্ভব নয়। তদুপরি, এমনকি একটি একক সাধারণ প্রকার পোস্ট করার জন্য একটি বিশেষ ফর্ম্যাট রয়েছে (ক্যোরি স্ট্রিং বা REST শৈলীতে প্যারামিটারটি পাস করা বাদে)। এই পয়েন্টটিই আমাকে রেস্ট ক্লায়েন্টদের (যেমন ফিডলার এবং ক্রোমের অ্যাডভান্সড আরইএসটি ক্লায়েন্ট এক্সটেনশন) দিয়ে মাথা বেঁধে এবং প্রায় 5 ঘন্টা ওয়েবের আশেপাশে শিকার করেছিল যখন শেষ পর্যন্ত নীচের ইউআরএল সাহায্যকারী হিসাবে প্রমাণিত হয়েছিল। লিঙ্কটির জন্য প্রাসঙ্গিক বিষয়বস্তু উদ্ধৃত করবে মৃত!

Content-Type: application/x-www-form-urlencoded
in the request header and add a = before the JSON statement:
={"Name":"Turbo Tina","Email":"na@Turbo.Tina"}

পিএস: অদ্ভুত বাক্যবিন্যাস লক্ষ্য ?

http://forums.asp.net/t/1883467.aspx?The+received+value+is+null+when+I+try+to+Post+to+my+Web+Api

যাইহোক, আসুন আমরা সেই গল্পটি শেষ করি। সরানো:

চতুর্থত, jQuery এর মাধ্যমে জটিল ধরণের পোস্টিং , অবশ্যই, $ .জ্যাক্স () অবিলম্বে ভূমিকায় আসতে চলেছে:

আসুন আমরা বলি যে অ্যাকশন পদ্ধতিটি এমন কোনও ব্যক্তি অবজেক্ট গ্রহণ করে যার আইডি এবং নাম রয়েছে। সুতরাং, জাভাস্ক্রিপ্ট থেকে:

var person = { PersonId:1, Name:"James" }
$.ajax({
    type: 'POST',
    url: 'http://mydomain/api/TestApi/TestMethod',
    data: JSON.stringify(person),
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function(data){ console.log(data) }
});

এবং ক্রিয়াটি দেখতে পাবেন:

[HttpPost]
public string TestMethod(Person person)
{
    return "Hello from http post web api controller: " + person.Name;
}

উপরের সবগুলিই আমার জন্য কাজ করেছিল !! চিয়ার্স!


2
আমি প্রতি কয়েকমাস এই সমস্যাটি আঘাত হানে বলে মনে করি, বেশিরভাগ সময় আমি শেষ পর্যন্ত এটি সমাধান করি তবে এবার আমি হাল ছেড়ে দিয়েছি। উপরের টিপসের কোনওটিই আমার পক্ষে এটি সমাধান করে না, তাই আমি এটিকে একটি পদ্ধতিরূপে বিনিন করার সিদ্ধান্ত নিয়েছি। যদি সঠিক হয়ে উঠতে খুব কষ্ট হয় তবে কেন বিরক্ত করবেন? যাইহোক এটি কেবল একটি সুবিধা - কেবল স্ট্রিং হিসাবে সামগ্রীটি নিন এবং এটি রূপান্তর করতে নিউটনসফ্ট ব্যবহার করুন। সম্পন্ন. এটি "সহজ" উপায়টি সমাধান করার জন্য প্রায় এক ঘন্টা চেষ্টা করার পরে "শক্ত" উপায়টিকে সমাধান করতে সম্ভবত 30 সেকেন্ড সময় নিয়েছিল। আমি পদ্ধতির বিষয়ে বন্য নই, তবে এটির সাথে কি কোনও মৌলিক সমস্যা আছে?
গত ৪

PS: WebApi2 এ, আমরা এখন রুট ডেকোরেটর ব্যবহার করতে পারি। সুতরাং এই ইস্যুটি মূলত সম্বোধন করা। asp.net/web-api/overview/web-api-routing-and- કાર્યવાહી/…
বৈভব

2
একটি পর্যবেক্ষণ যোগ করতে চান। কখনও কখনও, কোনও জটিল ধরণের (প্রাক্তন: ডিটিও) পাস করার সময়, ওয়েবএপিআই পাশের মডেল-বাঁধাই ব্যর্থ (নাল) হওয়ার কারণটি হ'ল মডেলটির এক বা একাধিক বৈশিষ্ট্য বেমানান (বা পার্স করতে ব্যর্থ হবে)। যেমন। কোনও গাইডের সম্পত্তি একটি অবৈধ জিইউইডি বরাদ্দ করা হচ্ছে। এই ক্ষেত্রে, সমস্ত বস্তুর বৈশিষ্ট্যের জন্য ডিফল্ট / খালি মানগুলি ব্যবহার করে চেষ্টা করুন again
বৈভব

10

আমি সবেমাত্র এটি নিয়ে খেলছি এবং এর পরিবর্তে একটি বিজোড় ফলাফল আবিষ্কার করেছি। বলুন আপনার সিতে # শ্রেণিতে আপনার সার্বজনিক সম্পত্তি রয়েছে:

public class Customer
{
    public string contact_name;
    public string company_name;
}

তারপরে আপনাকে শায়জুর পরামর্শ অনুসারে JSON.stringify কৌশলটি করতে হবে এবং এটিকে এটি কল করতে হবে:

var customer = {contact_name :"Scott",company_name:"HP"};
$.ajax({
    type: "POST",
    data :JSON.stringify(customer),
    url: "api/Customer",
    contentType: "application/json"
});

তবে, আপনি যদি এইভাবে নিজের ক্লাসে গেটার এবং সেটটারগুলি সংজ্ঞা দেন:

public class Customer
{
    public string contact_name { get; set; }
    public string company_name { get; set; }
}

তবে আপনি এটিকে আরও সহজভাবে কল করতে পারেন:

$.ajax({
    type: "POST",
    data :customer,
    url: "api/Customer"
});

এটি HTTP শিরোনাম ব্যবহার করে:

Content-Type:application/x-www-form-urlencoded

আমি এখানে কি ঘটছে তা সম্পর্কে নিশ্চিত নই তবে ফ্রেমওয়ার্কটিতে এটি কোনও বাগ (বৈশিষ্ট্য?) এর মতো দেখাচ্ছে। সম্ভবত বিভিন্ন বাইন্ডিং পদ্ধতি বিভিন্ন "অ্যাডাপ্টার" কল করছে এবং অ্যাপ্লিকেশন / জসন এর জন্য অ্যাডাপ্টার যখন জনসাধারণের বৈশিষ্ট্যগুলির সাথে কাজ করে, ফর্ম এনকোডড ডেটার জন্য এটি ব্যবহার করে না।

যদিও সেরা অনুশীলন হিসাবে বিবেচিত হবে আমার কোনও ধারণা নেই।


6
সম্পত্তি বনাম ক্ষেত্রগুলি কেন এটির পৃথক। সম্পত্তি হ'ল সর্বোত্তম অনুশীলন। আপনি যে প্রথম উদাহরণটিতে বৈশিষ্ট্যগুলি বলছেন তা আসলে ক্ষেত্র। আপনি যখন তাদের উপর একটি গেট / সেট রাখেন তখন তাদের একটি স্বয়ংক্রিয়ভাবে তৈরি ব্যাকিং ফিল্ড থাকে যা তাদের সম্পত্তি তৈরি করে।
পাকোগোমেজ

এটি খুব সত্য, এবং বিজোড়। শুধুমাত্র ক্ষেত্র সহ সাধারণ শ্রেণিগুলি পোস্ট গঠনের সাথে আবদ্ধ হবে না, তবে বৈশিষ্ট্যগুলি হবে। বিটিডাব্লু: তবুও কেন ব্যাখ্যা হচ্ছে না ...? আমি কেবল অনুমান করতে পারি যে অভ্যন্তরীণ যুক্তি কেবল জেএসএন ডেটা ক্ষেত্রগুলিতে আবদ্ধ করবে, এবং বৈশিষ্ট্যগুলিতে পোস্টের ডেটা তৈরি করবে, এবং এটাই কেবল ...?
জেমস উইলকিনস

1
এটি কেস কারণ কোডটি কেবলমাত্র বৈশিষ্ট্যের সন্ধান করে। যেহেতু প্রকাশ্য ক্ষেত্র ব্যবহার করছে না সর্বোত্তম অনুশীলন, মাইক্রোসফট দল অনুমতি না করার সিদ্ধান্ত না সেরা অনুশীলনের পরিস্থিতিতে, বেশ ভাল কারণ এই প্রোগ্রামটিতে।
এরিক ফিলিপস

1

JSON ফর্ম্যাটে স্ট্রিংটি পেতে JSON.stringify () ব্যবহার করুন, এজেএক্স কল করার সময় আপনাকে নীচের বৈশিষ্ট্যগুলির নীচে পাস করার বিষয়টি নিশ্চিত করুন:

  • কনটেন্ট টাইপ: 'অ্যাপ্লিকেশন / জেসন'

নীচে এসপ.net ওয়েব এপিআইতে এজাক্স পোস্ট কল করার জন্য জিকোয়ারি কোডটি দেওয়া হল:

var product =
    JSON.stringify({
        productGroup: "Fablet",
        productId: 1,
        productName: "Lumia 1525 64 GB",
        sellingPrice: 700
    });

$.ajax({
    URL: 'http://localhost/api/Products',
    type: 'POST',
    contentType: 'application/json',
    data: product,
    success: function (data, status, xhr) {
        alert('Success!');
    },
    error: function (xhr, status, error) {
        alert('Update Error occurred - ' + error);
    }
});


2
ডেটা টাইপ প্রয়োজন হয় না।
এরিক ফিলিপস

0

আপনার ওয়েবএপিআই পরিষেবাটি এমন একটি কাঠামোর সাথে জোরালোভাবে টাইপ করা অবজেক্টের প্রত্যাশা করছে যা আপনি JSON এর সাথে মেলে যাচ্ছেন Make এবং নিশ্চিত করে নিন যে আপনি যে জেএসএন পোস্ট করছেন তা আপনি আরও শক্তিশালী করবেন।

এখানে আমার জাভাস্ক্রিপ্ট (AngluarJS ব্যবহার করে):

$scope.updateUserActivity = function (_objuserActivity) {
        $http
        ({
            method: 'post',
            url: 'your url here',
            headers: { 'Content-Type': 'application/json'},
            data: JSON.stringify(_objuserActivity)
        })
        .then(function (response)
        {
            alert("success");
        })
        .catch(function (response)
        {
            alert("failure");
        })
        .finally(function ()
        {
        });

এবং এখানে আমার ওয়েবএপিআই নিয়ন্ত্রক:

[HttpPost]
[AcceptVerbs("POST")]
public string POSTMe([FromBody]Models.UserActivity _activity)
{
    return "hello";
}

0

এক্সএমএল-ওয়েবে এপিআই 2 এর পরিবর্তে, জেসন ফর্ম্যাটে ডেটা ফেরত দেওয়ার জন্য নিম্নলিখিত কোডটি:

Global.asax ফাইলে নিম্নলিখিত লাইনটি রাখুন

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
        GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);

0
@model MVCClient.Models.ProductDetails

@{
    ViewBag.Title = "ProductDetails";
}
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script type="text/javascript">

    $(document).ready(function () {
        $("#Save").click(function () {
            var ProductDetails = new Object();
            ProductDetails.ProductName =  $("#txt_productName").val();
            ProductDetails.ProductDetail = $("#txt_desc").val();
            ProductDetails.Price= $("#txt_price").val();
            $.ajax({
                url: "http://localhost:24481/api/Product/addProduct",
                type: "Post",
                dataType:'JSON',
                data:ProductDetails, 

                success: function (data) {
                    alert('Updated Successfully');
                    //window.location.href = "../Index";
                },
                error: function (msg) { alert(msg); }
            });
        });
    });
    </script>
<h2>ProductDetails</h2>

<form id="form1" method="post">
    <fieldset>
        <legend>ProductDetails</legend>


        <div class="editor-label">
            @Html.LabelFor(model => model.ProductName)
        </div>
        <div class="editor-field">

            <input id="txt_productName" type="text" name="fname">
            @Html.ValidationMessageFor(model => model.ProductName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.ProductDetail)
        </div>
        <div class="editor-field">

            <input id="txt_desc" type="text" name="fname">
            @Html.ValidationMessageFor(model => model.ProductDetail)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Price)
        </div>
        <div class="editor-field">

            <input id="txt_price" type="text" name="fname">
            @Html.ValidationMessageFor(model => model.Price)
        </div>



        <p>
            <input id="Save" type="button" value="Create" />
        </p>
    </fieldset>

</form>
    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>

</form>



@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

0

মাইক্রোসফ্ট এটি করার একটি ভাল উদাহরণ দিয়েছে:

https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/sending-html-form-data-part-1

প্রথমে অনুরোধটি বৈধ করুন

if (ModelState.IsValid)

এবং সিরিয়ালযুক্ত ডেটা ব্যবহার করার চেয়ে।

Content = new StringContent(update.Status)

এখানে 'স্ট্যাটাস' জটিল ধরণের একটি ক্ষেত্র। সিরিয়ালাইজেশন নেট দ্বারা সম্পন্ন করা হয়, সে সম্পর্কে উদ্বিগ্ন হওয়ার দরকার নেই।


0

1) আপনার ক্লায়েন্টের পাশে আপনি নীচের মতো স্ট্রিংয়ে আপনাকে http.post অনুরোধ পাঠাতে পারেন

var IndexInfo = JSON.stringify(this.scope.IndexTree);
this.$http.post('../../../api/EvaluationProcess/InsertEvaluationProcessInputType', "'" + IndexInfo + "'" ).then((response: any) => {}

2) তারপরে আপনার ওয়েব এপিআই কন্ট্রোলারে আপনি এটি ডিজিট্রাইজ করতে পারেন

public ApiResponce InsertEvaluationProcessInputType([FromBody]string IndexInfo)
    {
var des = (ApiReceivedListOfObjects<TempDistributedIndex>)Newtonsoft.Json.JsonConvert.DeserializeObject(DecryptedProcessInfo, typeof(ApiReceivedListOfObjects<TempDistributedIndex>));}

3) আপনার এপিআরসিটেস্টলিস্টঅফজেক্টস ক্লাসটি নীচের মতো হওয়া উচিত

public class ApiReceivedListOfObjects<T>
    {
        public List<T> element { get; set; }

    }

৪) নিশ্চিত করুন যে আপনার সিরিয়ালযুক্ত স্ট্রিং (এখানে সূচকগুলি ইনফো) নীচের কাঠামোর মতো হয়ে উঠেছে জেসনকন্টার্টের আগে।

var resp = @"
    {
        ""element"": [
        {
            ""A"": ""A Jones"",
            ""B"": ""500015763""
        },
        {
            ""A"": ""B Smith"",
            ""B"": ""504986213""
        },
        {
            ""A"": ""C Brown"",
            ""B"": ""509034361""
        }
        ]
    }";
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.