मैं अपने रेजर मार्कअप में URL पैरामीटर की जांच करना चाहता हूं। उदाहरण के लिए, मैं ऐसा कुछ कैसे करूँ:
<div id="wrap" class="@{if (URL "IFRAME" PARAMETER EQUALS 1) iframe-page}">
जवाबों:
<div id="wrap" class=' @(ViewContext.RouteData.Values["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>
EDIT 01-10-2014:
चूंकि यह प्रश्न इतना लोकप्रिय है इसलिए इस उत्तर में सुधार किया गया है।
ऊपर दिए गए उदाहरण से केवल मान प्राप्त किए जाएंगे RouteData
, इसलिए केवल उन क्वेरस्टार्स से जो कुछ पंजीकृत मार्ग से पकड़े जाते हैं। वर्तमान में प्राप्त करने के लिए आपको क्वेरिस्ट्रिंग मान प्राप्त करना है HttpRequest
। सबसे तेज़ तरीका कॉल करके है (जैसा कि TruMan ने बताया) `Request.Querystring 'तो उत्तर होना चाहिए:
<div id="wrap" class=' @(Request.QueryString["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>
आप रूटवील्यूज़ बनाम क्वेरीस्ट्रिंग एमवीसी की भी जांच कर सकते हैं ?
EDIT 03-05-2019:
उपरोक्त समाधान .NET फ्रेमवर्क के लिए काम कर रहा है ।
जैसा कि दूसरों ने बताया कि यदि आप .NET कोर में क्वेरी स्ट्रिंग मान प्राप्त करना चाहते हैं, तो आपको पथ Query
से ऑब्जेक्ट का उपयोग करना होगा Context.Request
। तो यह होगा:
<div id="wrap" class=' @(Context.Request.Query["iframe"] == new StringValues("1") ? /*do sth*/ : /*do sth else*/')> </div>
कृपया ध्यान दें कि मैं StringValues("1")
बयान में उपयोग कर रहा हूं क्योंकि शुद्ध के बजाय Query
रिटर्न देता है । यह इस scenerio जो मैंने पाया है के लिए रास्ता साफ है।StringValues
string
Context
हैHttpContext
यदि आप .net core 2.0 का उपयोग कर रहे हैं तो यह होगा:
Context.Request.Query["id"]
नमूना उपयोग:
<a href="@Url.Action("Query",new {parm1=Context.Request.Query["queryparm1"]})">GO</a>
इसे उत्तर के रूप में पोस्ट करने का सुझाव दिया गया था, क्योंकि कुछ अन्य उत्तर 'वर्तमान संदर्भ में संदर्भ का नाम मौजूद नहीं है' जैसी त्रुटियां दे रहे हैं।
बस निम्नलिखित कार्यों का उपयोग कर:
Request.Query["queryparm1"]
नमूना उपयोग:
<a href="@Url.Action("Query",new {parm1=Request.Query["queryparm1"]})">GO</a>
मेरे लिए काम किए गए उत्तरों में से कुछ भी नहीं, मुझे "HttpRequestBase" मिल रहा था जिसमें 'क्वेरी' की कोई परिभाषा नहीं है, लेकिन इसने काम किया:
HttpContext.Current.Request.QueryString["index"]
मुझे लगता है कि नियंत्रक और ViewData शब्दकोश का उपयोग करने के लिए एक और अधिक सुंदर समाधान है:
//Controller:
public ActionResult Action(int IFRAME)
{
ViewData["IsIframe"] = IFRAME == 1;
return View();
}
//view
@{
string classToUse = (bool)ViewData["IsIframe"] ? "iframe-page" : "";
<div id="wrap" class='@classToUse'></div>
}
return View(new SomeViewModel{ IsIFrame = IFrame });
Asp.net Core 2 के लिए
ViewContext.ModelState["id"].AttemptedValue
AttempValue
- अगर पैरामीटर क्वेरी स्ट्रिंग में मौजूद नहीं है, तो आपको एक अपवाद मिलेगा, इसलिए आपको पहले जांच करनी चाहिए:@if (ViewContext.ModelState["id"] != null)...