ajax ActionLink मॉडल मान सबमिट करें




asp.net-mvc asp.net-mvc-5 (2)

मैं अपने अजाक्स चाहता हूँ। एक्शनलिंक एक्शन के लिए एक व्यू मॉोडल प्रॉपर्टी को पास करने के लिए

यहां मेरा व्यूमोल्ड है

public class ViewModel
    {
        public string Searchtext { get; set; }
    }

मेरा। Cshtml

@Ajax.ActionLink("Bottom3", "Bottom3",new { name = Model.Searchtext}, new AjaxOptions
{
    HttpMethod = "POST",
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "pointsDiv"
})

 using(Html.BeginForm("Bottom3", "Home", FormMethod.Get))
     {
         @Html.TextBoxFor(x => x.Searchtext)
         <button type="submit">Search</button>
     }
    <div id="pointsDiv"></div>
}

मेरी नियंत्रक कार्रवाई:

public PartialViewResult Bottom3(string name)
        {
            var model = db.XLBDataPoints.OrderBy(x => x.DataPointID).Take(3).ToList();

            return PartialView("Partial1", model);
        }

लेकिन कार्रवाई करने के लिए नामित पैरामीटर हमेशा अशक्त होता है। मैं इसे कैसे हल करूं?


आपके कोड में ... आपके सर्वर पर पोस्ट करने के 2 अलग-अलग तरीके हैं: लिंक और फ़ॉर्म बटन

समस्या यह है कि ActionLink को ग्राहक पक्ष में इनपुट से मूल्य प्राप्त करने का कोई तरीका नहीं है ... सिर्फ मूल मान।

यदि आप खोज बटन दबाते हैं, तो आपको एक मूल्य पोस्ट किया जाएगा।

अब, आप एक मानक एक्शनलिंक (न कि अजाक्स। एक्शनलिंक) को संशोधित करने के लिए कुछ jQuery का उपयोग कर सकते हैं: https://.com/a/1148468/7720

या ... आप सामान्य फॉर्म के बजाय अजाक्स पोस्ट करने के लिए अपना फॉर्म बदल सकते हैं: https://.com/a/9051612/7720


मैंने ऐसा मेरे जैसे मॉडल के लिए किया था मैंने केवल एचटीटीपी पोस्ट विधि का समर्थन किया तो अपने अजाक्स। एक्शनलिंक में एचटीटीपी मोड = "पोस्ट" जोड़ें

    [HttpPost]
    public ActionResult Accounts(ParametricAccountsModel model)
    {
        if (model.Accounts == null)
        {
            GetAccountsForModel(model);
        }
        if (model.AccountIds == null)
        {
            model.AccountIds = new List<int>();
        }
        return View(model);
    }

रेजर दृश्य पर

@Ajax.ActionLink(
        "Add Account to Order", "Accounts", "Parametric", null,
        new AjaxOptions() { InsertionMode = InsertionMode.Replace, UpdateTargetId = "...", HttpMethod = "POST" },
        new { @id = "AddParametricAccountLink" })  

मॉडल में चयनित खाता आईडी की एक सूची है इसलिए जावास्क्रिप्ट में, मैंने गतिशील रूप से एक्शन लिंक के href को संशोधित किया

function UpdateParametricAccountAction() {
    var originalLink = '/TradeNCashMgmt/Parametric/Accounts';
    var append = '';
    var numberOfRows = $('#ParametricAccounts').find('.parametric-account-  row').size();
    for (var i = 0; i < numberOfRows; i++) {
        if (i != 0) {
            append += '&';
        }
        else {
            append = '?';
        }
        var idValue = $('#NotionalTransactionsAccountId_' + i).val();
        append += 'AccountIds%5B' + i + '%5D=' + idValue;
    }

    $('#AddParametricAccountLink').attr('href', originalLink + append);
}

चूंकि मॉडल बाइंडर क्वेरी स्ट्रिंग में पैरामीटर नामों के लिए दिखता है और प्रस्तुत करने के बाद, यह href का उपयोग करके मूल्यों को उठाएगा। इसलिए मैंने अपने Ajax.ActionLink पर क्वेरी स्ट्रिंग का उपयोग करके एक मॉडल ऑब्जेक्ट पोस्ट किया। नहीं साफ विधि, लेकिन यह काम करता है।





html-helper