2011-11-17 11 views
8

में खोज निष्पादित करना मैं एएसपीनेट एमवीसी के लिए नया हूं और मुझे कोई जानकारी नहीं है कि मैं खोज कैसे कर सकता हूं। मेरी आवश्यकता है, कृपया मुझे बताएं कि आप इसे कैसे संभालेंगे: -Asp.net एमवीसी

मुझे टेक्स्टबॉक्स होना चाहिए जहां उपयोगकर्ता खोज क्वेरी या स्ट्रिंग दर्ज कर सकता है। उपयोगकर्ता तब सबमिट करने के लिए बटन या प्रेस पर क्लिक करता है। स्ट्रिंग को किसी तालिका के प्रॉपर्टी नाम से मिलान करने की आवश्यकता होती है।

नोट: - डेटा पूछना और परिणाम प्राप्त करना यहां मुख्य बिंदु नहीं है। मुझे यह जानने की ज़रूरत है कि आप उपयोगकर्ता इनपुट कैसे लेंगे और इसे नियंत्रक कार्रवाई या आगे की प्रक्रिया के लिए जो भी पास करेंगे। बस मुझे बताएं कि आप उपयोगकर्ता इनपुट कैसे पढ़ेंगे और आप इसे कहां खोजेंगे।

उत्तर

8

Asp.Net MVC का उपयोग करता है

public class SearchViewModel 
{ 
    [DisplayName("search query *")] 
    [Required] 
    public string Query { get; set; } 
} 

तो आप एक नियंत्रक बारे में मानक HTTP क्रियाएँ। एचटीएमएल भाग के लिए, यह एक सामान्य एचटीएमएल फॉर्म है जो यूआरएल को इंगित करता है। सर्वर पक्ष, वह यूआरएल एक नियंत्रक/क्रिया के लिए भेजा जाएगा जो इनपुट को संभालेगा और जो आवश्यक है उसे करें।

चलो एक नमूना है। आप एक खोज फ़ॉर्म बनाना चाहते हैं। सबसे पहले, खोज फ़ॉर्म को POST के बजाय HTTP GET विधि का उपयोग करने का सबसे अच्छा अभ्यास है, इसलिए खोज परिणामों को बुकमार्क किया जा सकता है, लिंक किया जा सकता है, अनुक्रमित, आदि। मैं Html.BeginForm सहायक विधि का उपयोग नहीं करूँगा और चीजों को और अधिक बनाने के लिए स्पष्ट।

<form method="get" action="@Url.Action("MyAction", "MyController")"> 
<label for="search">Search</label> 
<input type="text" name="search" id="search" /> 
<button type="submit">Perform search</button> 
</form> 

यह आपको आवश्यक सभी HTML है। अब आप एक नियंत्रक "MyController" कहा जाता हूँ है और विधि कुछ इस तरह होगा:

[HttpGet] 
public ActionResult MyAction(string search) 
{ 
//do whatever you need with the parameter, 
//like using it as parameter in Linq to Entities or Linq to Sql, etc. 
//Suppose your search result will be put in variable "result". 
ViewData.Model = result; 
return View(); 
} 

अब दृश्य "MyAction" कहा जाता है रेंडर किया जाएगा, और कहा कि देखने का मॉडल अपने "परिणाम" हो जाएगा । फिर आप इसे अपनी इच्छानुसार प्रदर्शित करेंगे।

3

यह करने का यह सबसे अच्छा तरीका है।

एक ViewModel

public class SearchViewModel 
{ 
    public string Query { get; set; } 
} 

एक नियंत्रक

public class SearchController : Controller 
    { 
     [HttpPost] 
     public ActionResult Search(SearchViewModel model) 
     { 
      // perform search based on model.Query 

      // return a View with your Data. 
     } 
    } 

दृश्य बनाएं बनाएँ

// in your view 
@using (Html.BeginForm("Search", "SearchController")) 
{ 
    @Html.TextBox("Query") 
    <input type="submit" value="search" /> 
} 

उम्मीद है कि यह

7

हमेशा एक एएसपी.नेट एमवीसी एप्लिकेशन में जैसा कि आप एक दृश्य मॉडल को परिभाषित करके शुरू करते हैं जो आपके दृश्य की संरचना और आवश्यकताओं को व्यक्त करेगा। अब तक आप एक रूप एक खोज इनपुट युक्त बारे में बात की:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new SearchViewModel()); 
    } 

    [HttpPost] 
    public ActionResult Index(SearchViewModel model) 
    { 
     if (!ModelState.IsValid) 
     { 
      // There was a validation error => redisplay the view so 
      // that the user can fix it 
      return View(model); 
     } 

     // At this stage we know that the model is valid. The model.Query 
     // property will contain whatever value the user entered in the input 
     // So here you could search your datastore and return the results 

     // You haven't explained under what form you need the results so 
     // depending on that you could add other property to the view model 
     // which will store those results and populate it here 

     return View(model); 
    } 
} 

और अंत में एक दृश्य:

@model SearchViewModel 

@using (Html.BeginForm()) 
{ 
    @Html.LabelFor(x => x.Query) 
    @Html.EditorFor(x => x.Query) 
    @Html.ValidationMessageFor(x => x.Query) 
    <button type="submit">Search</button> 
} 
+0

सबसे पहले धन्यवाद साथी। जैसा कि आप देख सकते हैं, अन्य जवाब में @ माटेटेओ मोस्का ने HTTP क्रियाओं के उपयोग का उल्लेख किया है। क्या आपको लगता है कि किसी को इसका उपयोग करना चाहिए या हमेशा ऐसे प्रयोजनों के लिए व्यूमोडेल उपयोग का पालन करना चाहिए –

+1

@ पंकज उपाध्याय, मॉडल और HTTP क्रियाएं दो पूरी तरह अलग विचार हैं जिनमें कुछ भी सामान्य नहीं है।आपको हमेशा एएसपी.नेट एमवीसी अनुप्रयोग में दृश्य मॉडल का उपयोग करना चाहिए और जहां तक ​​HTTP क्रियाएं संबंधित हैं, ठीक है, क्योंकि यह एक वेब अनुप्रयोग है और HTTP प्रोटोकॉल पर आधारित है, आप पहले ही HTTP क्रियाओं का उपयोग कर रहे हैं। यदि आप चाहें तो एचटीएमएल फॉर्म पर जीईटी क्रिया का उपयोग कर सकते हैं। Html.BeginForm हेल्पर में एक अधिभार है जो आपको यह निर्दिष्ट करने की अनुमति देता है: '@using (HTML.BeginForm (शून्य, शून्य, FormMethod.Get)) {...} '। फिर उस क्रिया से '[HttpPost]' विशेषता को हटा दें जिसे आप सबमिट कर रहे हैं। –

+0

या ... डैट्स मैं क्या प्राप्त करने का उपयोग कह रहा था। क्या आप इस तरह के उद्देश्यों के लिए नहीं सोचते हैं, इसे देखने के बजाय इसका उपयोग करना बेहतर होगा? क्योंकि इस तरह से इनपुट इनपुट लेने के लिए किसी को एक अलग व्यूमोडेल बनाने की आवश्यकता नहीं होती है। –

संबंधित मुद्दे