উত্তরগুলি খুব ভাল তবে এমভিসি এবং .NET এর সর্বশেষ প্রকাশের আর একটি উপায় আছে যা আমি "পুরাতন স্কুল" ফর্ম সংগ্রহ এবং অনুরোধ কীগুলির পরিবর্তে সত্যই ব্যবহার করতে চাই।
ফর্ম ট্যাগের মধ্যে থাকা এইচটিএমএল স্নিপেটটি বিবেচনা করুন যা হয় কোনও এজাক্স বা ফর্ম পোস্ট করে।
<input type="hidden" name="TrackingID"
<input type="text" name="FirstName" id="firstnametext" />
<input type="checkbox" name="IsLegal" value="Do you accept terms and conditions?" />
আপনার নিয়ামক প্রকৃতপক্ষে ফর্ম ডেটা বিশ্লেষণ করবে এবং সংজ্ঞায়িত ধরণের পরামিতি হিসাবে এটি আপনার কাছে পৌঁছে দেওয়ার চেষ্টা করবে। আমি চেকবক্সটি অন্তর্ভুক্ত করেছি কারণ এটি একটি কৃপণ। এটি যদি চেক করা থাকে তবে "চালু" পাঠ্যটি পরীক্ষিত করে এবং যদি চেক না করা হয় তবে শূন্য হয়। যদিও প্রয়োজনটি হ'ল এই সংজ্ঞায়িত ভেরিয়েবলগুলি অবশ্যই বিদ্যমান (যদি না ক্ষয়যোগ্য (তবে এটি ক্ষুদ্র তবে মনে রাখবেন না string
)) নাহলে এজেএক্স বা পোষ্ট ব্যর্থ হবে।
[HttpPost]
public ActionResult PostBack(int TrackingID, string FirstName, string IsLegal){
MyData.SaveRequest(TrackingID,FirstName, IsLegal == null ? false : true);
}
আপনি কোনও রেজার সাহায্যকারী ব্যবহার না করে কোনও মডেল ফিরে পোস্ট করতে পারেন। আমি এসেছি যে এটি কিছু সময় প্রয়োজন।
public Class HomeModel
{
public int HouseNumber { get; set; }
public string StreetAddress { get; set; }
}
এইচটিএমএল চিহ্নিতকরণটি কেবল ...
<input type="text" name="variableName.HouseNumber" id="whateverid" >
এবং আপনার নিয়ামক (রেজার ইঞ্জিন) ফর্ম ভেরিয়েবল "ভেরিয়েবলনেম" (নামটি আপনার পছন্দ মতো তবে এটি ধারাবাহিকভাবে বজায় রাখবেন) বাধা দেবে এবং এটিকে তৈরি করার চেষ্টা করবে এবং এটি মাইমোডেলে কাস্ট করবে।
[HttpPost]
public ActionResult PostBack(HomeModel variableName){
postBack.HouseNumber; //The value user entered
postBack.StreetAddress; //the default value of NULL.
}
যখন কোনও নিয়ামক কোনও মডেলের প্রত্যাশা করে (এই ক্ষেত্রে হোমমোডেল) আপনার সমস্ত ক্ষেত্র সংজ্ঞায়িত করতে হবে না কারণ পার্সার কেবল সেগুলি ডিফল্টরূপে ছেড়ে যায়, সাধারণত ন্যূনাল। সুন্দর জিনিস হ'ল আপনি মার্ক-আপে বিভিন্ন মডেলকে মিশ্রিত করতে এবং মেলাতে পারেন এবং পোস্ট ব্যাক পার্স যতটা সম্ভব পপুলেশন করবে। আপনাকে পৃষ্ঠায় কোনও মডেল নির্ধারণ করতে বা কোনও সহায়ক ব্যবহার করার দরকার নেই।
টিআইপি: কন্ট্রোলারে থাকা প্যারামিটারের নামটি এইচটিএমএল মার্ক-আপে "নাম =" সংজ্ঞায়িত নামটি মডেলের নাম নয় তবে প্রত্যাশিত ভেরিয়েবলের নাম!
List<>
এর মার্ক আপে ব্যবহার করা কিছুটা জটিল।
<input type="text" name="variableNameHere[0].HouseNumber" id="id" value="0">
<input type="text" name="variableNameHere[1].HouseNumber" id="whateverid-x" value="1">
<input type="text" name="variableNameHere[2].HouseNumber" value="2">
<input type="text" name="variableNameHere[3].HouseNumber" id="whateverid22" value="3">
তালিকায় সূচক <> আবশ্যক সর্বদা শূন্য ভিত্তিক এবং ক্রমযুক্ত। 0,1,2,3।
[HttpPost]
public ActionResult PostBack(List<HomeModel> variableNameHere){
int counter = MyHomes.Count()
foreach(var home in MyHomes)
{ ... }
}
ব্যবহার IEnumerable<>
অ শূন্য জন্য ভিত্তি করে এবং অ অনুক্রমিক সূচকের ফিরে পোস্ট করুন। বাইন্ডারটিকে সাহায্য করতে আমাদের একটি অতিরিক্ত লুকানো ইনপুট যুক্ত করতে হবে।
<input type="hidden" name="variableNameHere.Index" value="278">
<input type="text" name="variableNameHere[278].HouseNumber" id="id" value="3">
<input type="hidden" name="variableNameHere.Index" value="99976">
<input type="text" name="variableNameHere[99976].HouseNumber" id="id3" value="4">
<input type="hidden" name="variableNameHere.Index" value="777">
<input type="text" name="variableNameHere[777].HouseNumber" id="id23" value="5">
এবং কোডটির কেবলমাত্র আইনিউমারেবল এবং কল ব্যবহার করা দরকার ToList()
[HttpPost]
public ActionResult PostBack(IEnumerable<MyModel> variableNameHere){
int counter = variableNameHere.ToList().Count()
foreach(var home in variableNameHere)
{ ... }
}
প্রতি পৃষ্ঠায় একটি জটিল 'ভিউ' মডেল তৈরি করার জন্য একটি একক মডেল বা একটি ভিউমোডেল (অন্যান্য মডেলকে প্রত্যাখ্যানকারী মডেল) ব্যবহার করার পরামর্শ দেওয়া হয়। প্রস্তাবিত হিসাবে মেশানো এবং মেলানো খারাপ অনুশীলন হিসাবে বিবেচনা করা যেতে পারে, তবে যতক্ষণ না এটি কাজ করে এবং পঠনযোগ্য এটি বিএডি নয়। এটি অবশ্য রেজার ইঞ্জিনের শক্তি এবং নমনীয়তা প্রদর্শন করে।
সুতরাং যদি আপনাকে নির্বিচারে কিছু বাদ দিতে হয় বা রেজার সাহায্যকারী থেকে অন্য কোনও মূল্যকে ওভাররাইড করা প্রয়োজন হয় বা কেবলমাত্র নিজের সাহায্যকারী তৈরির মতো মনে হয় না, এমন একক ফর্মের জন্য যা কিছু অসাধারণ ডেটার সংমিশ্রণ ব্যবহার করে, আপনি দ্রুত অতিরিক্ত গ্রহণ করার জন্য এই পদ্ধতিগুলি ব্যবহার করতে পারেন ডেটা।