asp.net mvc - How to find exactly which button was clicked when button names are all identical? -


मेरे पास aspx फ़ाइल में निम्नलिखित कोड मिला है:

  & lt;% का उपयोग करके (Html.BeginForm ()) {int i = 0; & Gt%; & Lt;% foreach (मॉडेल में विभिन्न आइटम। संपादन) {% & gt; & LT; fieldset & gt; & Lt; इनपुट प्रकार = "छिपा हुआ" नाम = "educations.index" मान = "" / & gt; & Lt; p & gt; & Lt; लेबल = "PID" & gt; पीआईडी: & lt; / लेबल & gt; & Lt;% = Html.TextBox ("शिक्षा [" + I + "]। PID", item.PID)% & gt; & Lt;% = Html. वैधता संदेश ("PID", "*")% & gt; & Lt; / p & gt; & Lt; p & gt; & Lt; = = "EducationType" के लिए लेबल & gt; EducationType: & lt; / लेबल & gt; & Lt;% = Html.TextBox ("शिक्षा [" + I + "]। शिक्षा प्रकार", आइटम। शिक्षा का प्रकार)% & gt; & Lt;% = Html. वैधता संदेश ("शिक्षा प्रकार", "*")% & gt; & Lt; / p & gt; & Lt; p & gt; & Lt; लेबल = "स्कूल का नाम" & gt; SchoolName: & lt; / लेबल & gt; & Lt;% = Html.TextBox ("शिक्षा [" + I + "]। स्कूल का नाम", आइटम। स्कूलनाम)% & gt; & Lt;% = Html. वैधता संदेश ("स्कूलनाम", "*")% & gt; & Lt; / p & gt; & Lt; p & gt; & Lt; label = "UniversityId" & gt; के लिए UniversityId: & lt; / लेबल & gt; & Lt;% = Html.TextBox ("शिक्षा [" + I + "]। UniversityId", item.UniversityId)% & gt; & Lt;% = Html. वैधता संदेश ("विश्वविद्यालय आईडी", "*")% & gt; & Lt; / p & gt; & Lt; p & gt; & Lt; लेबल = "विभाग" & gt; विभाग: & lt; / लेबल & gt; & Lt;% = Html.TextBox ("शिक्षा [" + आई + "]। विभाग", आइटम। विभाग)% & gt; & Lt;% = Html. वैधता संदेश ("विभाग", "*")% & gt; & Lt; / p & gt; & Lt; p & gt; & Lt; लेबल = "डिग्री" & gt; डिग्री: & lt; / लेबल & gt; & Lt;% = Html.TextBox ("शिक्षा [" + I + "]। डिग्री", स्ट्रिंग.फॉर्मेट ("{0: F}", आइटम.डिगेरी))% & gt; & Lt;% = Html. वैधता संदेश ("डिग्री", "*")% & gt; & Lt; / p & gt; & Lt; p & gt; & Lt; लेबल = "वर्षीय स्नातक स्तर की पढ़ाई" & gt; YearOfGraduation: & lt; / लेबल & gt; & Lt;% = Html.TextBox ("educations [" + i + "] .युयरऑफ स्नातक", स्ट्रिंग.फॉर्मेट ("{0: F}", आइटम। युग स्नातक))% & gt; & Lt;% = Html. वैधता संदेश ("वर्षीय स्नातक", "*")% & gt; & Lt; / p & gt; & Lt; p & gt; & Lt; लेबल = "आईडी" & gt; ID: & lt; / लेबल & gt; & Lt;% = Html.TextBox ("शिक्षा [" + I + "] .ID", item.ID)% & gt; & Lt;% = Html. वैधता संदेश ("आईडी", "*")% & gt; & Lt; / p & gt; & Lt; इनपुट प्रकार = "सबमिट करें" name = "silButton" value = "Sil" / & gt; & Lt; / fieldset & gt; & Lt;% i ++; }% & Gt; & Lt; p & gt; & Lt; इनपुट प्रकार = "सबमिट करें" name = "ekleButton" value = "ek" / & gt; & Lt; / p & gt; & Lt;%}% & gt; & Lt; div & gt; & Lt;% = Html.ActionLink ("सूची में वापस", "अनुक्रमणिका")% & gt; & Lt; / div & gt;  

इस तरह से मैं गतिशील रूप से जोड़ ("एकल") और अधिक फ़ील्ड सक्षम कर रहा हूं अगर उपयोगकर्ता अतिरिक्त शिक्षा जानकारी (सबसे संभवतः किसी अन्य विश्वविद्यालय या किसी अन्य डिग्री से) में प्रवेश करना चाहता है।

यह कोड "सिले" बटन भी देता है (जिसका अर्थ है हटाना), और मुझे पता होना चाहिए कि कौन सी "सिली" बटन दबाया गया था और सत्र में मेरे "ऑब्जेक्ट" से उस प्रविष्टि को हटा दिया गया था।

मेरी क्रिया पद्धति इस तरह दिखती है:

  सार्वजनिक कार्यवाही चरण 3 (स्ट्रिंग एक्लेबटन, आईएलआईएसटी & lt; शिक्षा & gt; शिक्षा, IList & lt; स्ट्रिंग & gt; सिल बटन) {if (educations! = Null ) {_person.Educations.Clear (); _person.Educations.AddRange (शिक्षा); } अगर (एक्लेबटन! = नल) {_person.Educations.Add (नई शिक्षा ()); } If (silButton! = Null) {// इंडेक्स को ढूंढें और इसे _person.Edications से हटाएं} वापसी देखें (_person); }  

इस तरह से silButton! = Null अगर "silButton" बटनों में से कोई भी दबाया गया था और मुझे पता नहीं लगा कि कौन से बटन दबाया गया था। क्या यह पता लगाने का कोई तरीका है?

आप सूचक को बटन के नाम पर रख सकते हैं:

  & lt; इनपुट प्रकार = "सबमिट करें" नाम = "silButton & lt;% = i% & gt;" मान = "सील" / & gt;  

और अपनी क्रिया पद्धति में:

  var silButton = अनुरोध। पैराम्स। AllKeys.FirstOrDefault (key = & gt; key.StartsWith ("silButton") ); यदि (! स्ट्रिंग.आईएसनलऑरएक्लीटी (सिल बटन)) {var इंडेक्स = इंट। पर्स (सिल्बटन। रीप्ले ("सिल्बटन", स्ट्रिंग.एप्टी)); }  

Comments

Popular posts from this blog

asp.net - Javascript/DOM Why is does my form not support submit()? -

sockets - Delphi: TTcpServer, connection reset when reading -

javascript - Classic ASP "ExecuteGlobal" statement acting differently on two servers -