এএসপি.এনইটি ওয়েবফর্মগুলিতে রানাত = "সার্ভার" বৈশিষ্ট্যটি কেন প্রয়োজন?


205

কেন runat="server"এটি আমার বাধ্যতামূলক বৈশিষ্ট্য এবং serverআমার এএসপি.এনইটি সীমাবদ্ধ জ্ঞানের একমাত্র বিকল্প হিসাবে উপস্থিত হলে আমার সমস্ত এএসপি.নেট নিয়ন্ত্রণগুলিতে উল্লেখ করতে হবে এবং যদি আমি এটি ব্যবহার না করি তবে আমি একটি ত্রুটি পেয়েছি?

আমি বুঝতে পারি যে আমি এটি আমার এইচটিএমএল ট্যাগগুলিতে অপশনগতভাবে ব্যবহার করতে পারি এবং আমি ক্লায়েন্ট / সার্ভারের দৃষ্টান্ত এবং এটি কী নির্দিষ্ট করে তা বুঝতে পারি।

এটি কি একটি অপ্রয়োজনীয় ট্যাগ যা কেবলমাত্র ASP.NET নিয়ন্ত্রণ হিসাবে নিয়ন্ত্রণ দ্বারা বোঝানো যেতে পারে, বা এর অন্তর্নিহিত কারণ আছে?


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

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

উত্তর:


112

আমি সবসময় বিশ্বাস করি যে আপনি এএসপি.এনইটি ট্যাগ এবং এইচটিএমএল ট্যাগগুলি মিশ্রণ করতে পারেন এবং এইচটিএমএল ট্যাগগুলির হয় runat="server"বা না থাকার বিকল্প রয়েছে the ট্যাগটি রেখে দেওয়ার জন্য এটি কোনও ক্ষতি করে না এবং এটি এটি বের করে দেওয়ার জন্য একটি সংকলক ত্রুটির কারণ হয়। ওয়েব ভাষা সম্পর্কে আপনি যত বেশি বোঝাচ্ছেন, উদীয়মান প্রোগ্রামারকে আসা এবং এটি শেখানো তত কম সহজ। ট্যাগ বৈশিষ্ট্যাবলী সম্পর্কে ভার্বোস হওয়ার যে কোনও কারণ হিসাবে এটি ঠিক।

এই কথোপকথনটি মাইক শিনকেলের ব্লগে নিজের এবং মাইক্রোসফ্ট ন্যাশনাল সার্ভিসেসের টালবট ক্রোয়েলের মধ্যে ছিল। প্রাসঙ্গিক তথ্য নীচে রয়েছে (উত্সে ব্যাকরণগত ত্রুটির কারণে প্রথম অনুচ্ছেদে অনুচ্ছেদে):

[...] তবে <runat="server">ধারাবাহিকতা এবং এক্সটেনসিবিলিটির জন্য এর গুরুত্ব বেশি ।

যদি বিকাশকারীকে <asp: />এএসপি.এনইটি ইঞ্জিনটিকে উপেক্ষা করার জন্য কিছু ট্যাগ (যেমন ) চিহ্নিত করতে হয় তবে ট্যাগ এবং ভবিষ্যতের বর্ধনের মধ্যে নেমস্পেস সংঘর্ষের সম্ভাব্য সমস্যাও রয়েছে। <runat="server">বৈশিষ্ট্যটি প্রয়োজনীয়তার দ্বারা , এটি অবহেলিত।

এটি অব্যাহত রয়েছে:

যদি <runat=client>সমস্ত ক্লায়েন্ট-সাইড ট্যাগগুলির জন্য প্রয়োজন হয়, পার্সারকে সমস্ত ট্যাগ পার্স করতে এবং <runat=client>অংশটি সরিয়ে ফেলতে হবে।

তিনি আরো বলেছেন:

বর্তমানে, যদি আমার অনুমানটি সঠিক হয় তবে পার্সার কেবলমাত্র সমস্ত পাঠ্য (ট্যাগ বা কোনও ট্যাগ) উপেক্ষা করে যদি না এটি runat=serverবৈশিষ্ট্য বা একটি " <%" উপসর্গ বা এসসি " <!– #include(...) সহ একটি ট্যাগ না হয় , এএসপি.নেট ডিজাইন করা না থেকে ওয়েব বিকাশকারীদের (foo.aspx.vb) থেকে ওয়েব ডিজাইনারদের (foo.aspx) আলাদা করার মঞ্জুরি দেওয়ার জন্য, ওয়েব ডিজাইনাররা এএসপি.এনইটি সম্পর্কে জেনে না করে এইচটিএমএল এবং ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট স্থাপনের জন্য তাদের নিজস্ব ওয়েব ডিজাইনার সরঞ্জামগুলি ব্যবহার করতে পারেন নির্দিষ্ট ট্যাগ বা বৈশিষ্ট্য।


59
কারণ যাই হোক না কেন, এটি নিরাপদে যখন ডিফল্ট মান হতে পারে তখনই এটি পিএটিএতে প্রতিটি <এসএসপি>> ট্যাগের জন্য টাইপ করতে হবে।
বেলুগাবব

33

আমি সাধারণত অনুমান করতে পছন্দ করি না তবে আমি এটি চালিয়ে যাচ্ছি ...

আপনি যদি মাইক্রোসফ্টের .NET বিপণন হাইপকে আবার (2001?) মনে করেন তবে। নেট এমনকি কী ছিল তা বলা শক্ত ছিল hard এটি কি সার্ভার ছিল? একটি প্রোগ্রামিং প্ল্যাটফর্ম? একটি ভাষা? পুরোপুরি নতুন কিছু? বিজ্ঞাপনগুলি দেওয়া, এটি আপনি যা চেয়েছিলেন তা অস্পষ্টভাবে কিছু ছিল - এটি কেবল আপনার যে কোনও সমস্যা সমাধান করেছে।

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

সেই অদ্ভুত বিজ্ঞাপনগুলি মনে আছে?

সম্পর্কিত: কিছু .NET ইতিহাস সহ নিবন্ধ থেকে নিবন্ধ


5
আপনার কি এমন কোনও সাইটের সাথে কোনও লিঙ্ক রয়েছে যা "অদ্ভুত বিজ্ঞাপন" আছে?
এলোমেলো ওয়েবেগুই

হ্যাঁ আমি অদ্ভুত বিজ্ঞাপনগুলি মনে করি। দীর্ঘশ্বাস
ক্যাটফুড

13

কোনও পৃষ্ঠাতে অন্তর্ভুক্ত করা যেতে পারে এমন সমস্ত নিয়ন্ত্রণ অবশ্যই সার্ভারে চালিত করা উচিত নয় । উদাহরণ স্বরূপ:

<INPUT type="submit" runat=server />

এটি মূলত: সমান

<asp:Button runat=server />

প্রথমটি থেকে রানাত = সার্ভার ট্যাগটি সরিয়ে ফেলুন এবং আপনার কাছে একটি স্ট্যান্ডার্ড এইচটিএমএল বোতাম রয়েছে যা ব্রাউজারে চলে। সার্ভারে একটি নির্দিষ্ট নিয়ন্ত্রণ চালানোর পক্ষে এবং বিপক্ষে কারণ রয়েছে এবং আপনার অন্তর্ভুক্ত থাকা এইচটিএমএল মার্কআপের উপর ভিত্তি করে আপনি যা চান তা "অনুমান" করার জন্য এএসপি.নাইটের কোনও উপায় নেই। <asp:XXX />নিয়ন্ত্রণের পরিবারের জন্য রানাত = সার্ভারটি "নির্ধারণ" করা সম্ভব হতে পারে তবে আমার ধারণা মাইক্রোসফ্ট মার্কআপ সিনট্যাক্স এবং এএসপি.এনইটি ইঞ্জিনটিকে হ্যাক হিসাবে বিবেচনা করবে।


2
যদি সার্ভারে কোনও নিয়ন্ত্রণ চলমান থাকে, তার মানে কি আপনি জাভাস্ক্রিপ্ট ব্যবহার করে উপাদানগুলি নির্বাচন করতে পারবেন না? যেমন ডকুমেন্ট.জেটএলিমেন্টজাইআইডি ("টিভিএস: ট্রিভিউ");
Ciaran গ্যালাগার

3
উপাদানটি এখনও ক্লায়েন্টের ডিওএম এ থাকবে, সুতরাং জাভাস্ক্রিপ্ট / jQuery ব্যবহার করে এটি সংশোধন করা এখনও সম্ভব। সার্ভার-রেন্ডার করা উপাদানগুলির সাথে কাজ করা জটিল হতে পারে, বিশেষত গতিশীল নিয়ন্ত্রণগুলির সাথে।
ডেভ সোয়ারস্কি

8

মাইক্রোসফ্ট এমএসডিএন নিবন্ধটি ভুলে যাওয়া নিয়ন্ত্রণগুলি: এইচটিএমএল সার্ভার কন্ট্রোলগুলি পাঠ্য বাক্সে <input type="text">রূপান্তর করে রৌনত = "সার্ভার" ব্যবহারের ব্যাখ্যা দেয়<input type="text" id="Textbox1" runat="server">

এটি করার ফলে আপনি ওয়েব পৃষ্ঠাটি তৈরি এবং ক্লায়েন্টের কাছে নামানোর আগে সার্ভারের এইচটিএমএল উপাদানটিতে প্রোগ্রাম্যাটিক অ্যাক্সেস পাবেন। এইচটিএমএল উপাদানটিতে একটি আইডি বৈশিষ্ট্য থাকতে হবে। এই বৈশিষ্ট্যটি উপাদানটির জন্য একটি পরিচয় হিসাবে কাজ করে এবং আপনাকে তাদের নির্দিষ্ট আইডি দ্বারা উপাদানগুলিতে প্রোগ্রাম করতে সক্ষম করে। এই বৈশিষ্ট্যটি ছাড়াও, এইচটিএমএল উপাদানটিতে অবশ্যই রানাত = "সার্ভার" থাকতে হবে। এটি প্রসেসিং সার্ভারকে জানায় যে ট্যাগটি সার্ভারে প্রক্রিয়া করা হয় এবং এটি একটি traditionalতিহ্যবাহী এইচটিএমএল উপাদান হিসাবে বিবেচনা করা হয় না।

সংক্ষেপে, এইচটিএমএল উপাদানটিতে প্রোগ্রাম্যাটিক অ্যাক্সেস সক্ষম runat="server"করতে এটি এতে যুক্ত করুন।


2
প্রশ্নটি সম্বোধন করে না, যা জিজ্ঞাসা করছে কেন এএসপি.নেট ট্যাগগুলিতে রানাত = "সার্ভার" বাধ্যতামূলক।
nhahtdh

3
@nhahtdh উত্তর: "HTML উপাদানটিতে প্রোগ্রাম্যাটিক অ্যাক্সেস সক্ষম করতে"। :)
বিকাশকারী মারিয়াস Žilėnas

2
ট্যাগটির অর্থ এবং এটি কী করে ওপি জানে। ভাষা ডিজাইনের ক্ষেত্রে প্রশ্নটি জিজ্ঞাসা করছে - ডিজাইনার কী এমন সিদ্ধান্ত নেয় যে এমনকি এএসপি.নেট ট্যাগগুলি সার্ভারের পাশ দিয়ে চালানোর জন্য রানাত = "সার্ভার" দিয়ে চিহ্নিত করা দরকার।
nhahtdh

@ উত্তরঃ আপনার উত্তর কি?
বিকাশকারী মারিয়াস ইলানাস

2
আমার কাছে কোনও উত্তর নেই তবে শীর্ষস্থানীয় উত্তরগুলি প্রশ্নের উত্তর দেয় (সঠিক বা না)। আপনার উত্তর দেয় না এবং এটিই আমার মন্তব্যের কারণ।
nhahtdh

3

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


2

এএসপি.এনইটি ফাইলগুলিতে এইচটিএমএল উপাদানগুলি ডিফল্টরূপে পাঠ্য হিসাবে বিবেচিত হয়। এই উপাদানগুলিকে প্রোগ্রামযোগ্য করে তুলতে, runat="server"এইচটিএমএল উপাদানটিতে একটি বৈশিষ্ট্য যুক্ত করুন । এই বৈশিষ্ট্যটি নির্দেশ করে যে উপাদানটি একটি সার্ভার নিয়ন্ত্রণ হিসাবে গণ্য করা উচিত।


1

এটি সেখানে কারণ এএসপি .NET- এ সমস্ত নিয়ন্ত্রণ সিস্টেম.ইউব.ইউ.আই.কন্ট্রোলের উত্তরাধিকার সূত্রে প্রাপ্ত যা "রুনাত" বৈশিষ্ট্যযুক্ত।

Class.Web.UI.HTMLControl ক্লাসে, বৈশিষ্ট্যটি আবশ্যক নয়, তবে ক্লাসে System.Web.UI.WebControl বৈশিষ্ট্যটি প্রয়োজনীয়।

সম্পাদনা: আমাকে আরও নির্দিষ্ট করা যাক। যেহেতু asp.net বেশ HTML এর বিমূর্ততা, তাই সংকলকটির কিছু প্রকারের নির্দেশনা প্রয়োজন যাতে এটি জানে যে নির্দিষ্ট ট্যাগটিকে সার্ভার-সাইড চালানো দরকার। যদি সেই বৈশিষ্ট্যটি না থাকে তবে এটি প্রথমে সার্ভারে এটি প্রক্রিয়া করতে জানত না। যদি এটি সেখানে না থাকে তবে ধরে নেওয়া যায় এটি নিয়মিত মার্কআপ এবং এটি ক্লায়েন্টের কাছে পৌঁছে দেয়।


3
আপনার উত্তরটি খুব সংশোধিত প্রশ্ন।
পাবলো ফার্নান্দেজ

2
আমার উত্তরটি কেবল এটুকু জানিয়েছিল যে উত্তরাধিকারের কারণে রানাত বৈশিষ্ট্য রয়েছে। পরিষ্কার না হওয়ার জন্য আমার ক্ষমা চাইছি।
রাশ ব্র্যাডবেরি

3
স্ট্যাকের চেয়ে খানিকটা উঁচুতে, আমি ভীত, আমার প্রশ্নটি ছিল কেন এটি প্রথম স্থানে ছিল। যাইহোক ধন্যবাদ
johnc

2
আবার, সত্যিই প্রশ্নের উত্তর না দিয়ে, তবে আপনি কী বলতে চাইছেন তা আমি দেখতে
পেয়েছি

1

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


1

আপনি যদি এটি সাধারণ এইচটিএমএল ট্যাগগুলিতে ব্যবহার করেন তবে এর অর্থ হ'ল আপনি প্রোগ্রাম হ্যান্ডলার ইত্যাদিতে প্রোগ্রামক্রমে এগুলি পরিচালনা করতে পারেন, উদাহরণস্বরূপ পৃষ্ঠা লোডে একটি নোঙ্গর ট্যাগের href বা শ্রেণি পরিবর্তন করুন ... কেবল আপনার যদি তা করতে হয়, কারণ ভ্যানিলা এইচটিএমএল ট্যাগগুলি দ্রুত যাও.

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

@ জোনস্কিট যদি কোথাও থাকে তবে তিনি সম্ভবত আরও অনেক ভাল উত্তর দিতে সক্ষম হবেন।


0

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


0

"রিং" ট্যাগটি বিবেচনা করে অত্যন্ত অনর্থক বৈশিষ্ট্য স্পষ্টতই একটি এএসপি উপাদান এবং এটি একটি সার্ভার সাইড অ্যাক্সেসযোগ্য উপাদান হিসাবে চিহ্নিত করার জন্য পর্যাপ্ত হওয়া উচিত।

অন্য কোথাও এটি কোডের পিছনে ব্যবহার করতে সাধারণ ট্যাগগুলি বাড়িয়ে তুলত।


0

আমি কেবল পরীক্ষার-ত্রুটি করে এই সিদ্ধান্তে পৌঁছেছি: সার্ভারের দিকে রান-টাইমে উপাদানগুলি অ্যাক্সেস করার জন্য রানাত = "সার্ভার" প্রয়োজন। এগুলি সরান, পুনরায় সংকলন করুন এবং দেখুন কী ঘটে।


-5

runat="Server" ইঙ্গিত দেয় যে সার্ভারে একটি পোস্টব্যাক HTML "নিয়ন্ত্রণ" এর জন্য ঘটবে।

ওয়েব ফর্মগুলি নিয়ম ব্যবহার postbackকরে কোনও পৃষ্ঠা নিয়ন্ত্রণ ইভেন্ট প্রক্রিয়া করতে সার্ভারকে সিগন্যাল করতে।

.NET MVCপৃষ্ঠাগুলি ব্যবহার করবেন না postback(একটি ফর্ম বাদে "submit")। ক্লায়েন্ট পক্ষের পৃষ্ঠা পরিচালনা করতে MVCনির্ভর করে JQUERY(এইভাবে postbackসার্ভারে প্রচুর বার্তাগুলির প্রয়োজনকে বাইপাস করে )।

সুতরাং: .NETওয়েব ফর্ম ... "runat"পৃষ্ঠার মার্কআপে অ্যাট্রিবিউটটি অনেক ব্যবহার করুন ।

.NET MVC"runat"পৃষ্ঠা মার্কআপে খুব কমই বৈশিষ্ট্য ব্যবহার করা হয়।

আশা করি এটি কেন runatপ্রয়োজনীয় তা স্পষ্ট করতে সহায়তা করে ...


1
-1 ভুল তথ্য এবং প্রশ্নের উত্তর দেয় না।
ক্রিশ্চিয়ান ডায়াকোনস্কু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.