2014-09-09 7 views
11

मेरे पास मेरे _Layout पृष्ठ पर एक साधारण खोज फ़ॉर्म है।एमवीसी 5 एचटीएमएल.बिजिनफॉर्म मॉडल के बिना

मैं आसानी से खोज-एफएलडी से नियंत्रक को मूल्य कैसे पास कर सकता हूं? मॉडल या व्यूमोडेल बनाने के बिना।

@using (Html.BeginForm("Search", "Home", new { id = "search-fld" }, FormMethod.Post, new { @class = "header-search pull-right" })) 
{ 
    @Html.AntiForgeryToken() 

    <input type="text" placeholder="Search" id="search-fld"> 
    <button type="submit"> 
     <i class="fa fa-search"></i> 
    </button> 
} 

यदि मैं यह तो चलाने "खोज-fld" नियंत्रक को (offcourse)

उपयोग अजाक्स प्रपत्र बजाय भेजने और jQuery के साथ मूल्य प्राप्त हो सकते हैं?

उत्तर

13

बस अपने input एक name विशेषता देकर:

<input type="text" placeholder="Search" id="search-fld" name="searchValue"> 

फिर अपने नियंत्रक में एक पैरामीटर HttpPost विधि के साथ उस नाम मिलान:

[HttpPost] 
public ActionResult Search(string searchValue) 
+0

हाँ, इस तरह के काम। एकमात्र समस्या यह है कि यूआरएल अब http: // localhost: 52223/है और यदि मैं "asd" खोजता हूं तो यह पैरामीटर पास करता है और यूआरएल http: // localhost में बदल जाता है: 52223/खोज लेकिन मैं इसे http कहना चाहता हूं : // localhost: 52223/खोज/asd और यह काम करता है अगर मेरे पास नियंत्रक पर कस्टम मार्ग है: [रूट ("सर्च/{सर्चस्ट्रिंग}")] लेकिन फिर यह काम नहीं करता है क्योंकि यह मान पास नहीं करता है मार्ग में मार्ग विशेषताएँ:/कोई सुझाव? – stibay

+0

रूट में भी कस्टम मार्ग मैप किया गया है। कॉनफिग। इस तरह: routes.MapRoute ( नाम: "होम", यूआरएल: "{action}/{id}", डिफ़ॉल्ट: नया {नियंत्रक = "होम", एक्शन = "इंडेक्स", आईडी = यूआरएल पैरामीटर। वैकल्पिक} ); – stibay

+0

यदि नाम मिलते हैं तो यह होगा, यानी यदि आपके पास 'सार्वजनिक एक्शन रिसेट सर्च (स्ट्रिंग सर्च वैल्यू)' है, तो आपको अपने इनपुट पर 'name =" searchValue "की आवश्यकता है और' [रूट ("सर्च/{searchValue}") ] 'अपने मार्ग के रूप में। –

0

आप ऐसे ही एक अजाक्स कॉल का उपयोग कर सकते हैं:

$(document).ready(function() { 
$("#yourButton").click(function() { 
      var yourValue = $("#search-fld").val() ; 
      var url = "Search/asd/"; 
      $.ajax({ 
       url: url, 
       cache: false, 
       type: 'POST', 
       data: { 
        searchValue = yourValue 
       } 
       success: function (data) { 
        if (data === true) { 
         alert('Success'); 
        } else { 
         alert('Failed'); 
        } 
        } 
       }) 
      }) 
     }) 

और आपकी मेट नियंत्रक में होड:

[HttpPost] 
public ActionResult asd(string searchValue) 
{ 

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