मैं एएसपीनेट कोर 3.1 को कार्यान्वित कर रहा हूं। मेरे रेज़र व्यू में मेरे पास तीन रेडियो बटन हैं और निम्नलिखित कोड के साथ, मैं अपने संबंधित डेटा को दिखाने के लिए चयनित रेडियो बटन मान को नियंत्रक में इंडेक्स एक्शन में भेजना चाहता हूं। मेरी समस्या रेडियो बटन चुनने के बाद है और उसके बाद बटन का चयन करें। यह इंडेक्स विधि को शून्य मान भेजता है।

यहाँ रेज़र में मेरा रेडियो बटन कोड

@model CSD.ChartObjects
 <form method="post">
        @foreach (var year in Model.Years)
        {
            <input type="radio" asp-for="Year" value="@year" />@year<br />
        }
        <input type="submit" asp-action="Index" />
    </form>

यहाँ मेरा मॉडल ऑब्जेक्ट है जिसे रेज़र में पढ़ा जाता है

    public class ChartObjects
    {
        public List<ChartModel> Percent { get; set; }
        public List<ChartModel> Time { get; set; }
        public List<ChartModel> Avg { get; set; }
        public List<ChartModel> Total { get; set; }

        [BindProperty]
        public string Year { get; set; }
        public string[] Years = new[] { "1398", "1399", "1400" };
    
}

और यहाँ मेरे होमकंट्रोलर का शरीर है:

[HttpGet]
        public IActionResult Index()
        {
            return (BuildIndexModel("1399"));
        }

        [HttpPost]
        public IActionResult Index([FromForm] string currentYear)
        {
            return (BuildIndexModel(currentYear));
        }



        public IActionResult BuildIndexModel([FromForm] string currentYear)
        {
...
}
1
MinaMRM 16 सितंबर 2020, 10:50

1 उत्तर

सबसे बढ़िया उत्तर

आपको जो समस्या हो रही है वह इस वजह से है:

[HttpPost]
public IActionResult Index([FromForm] string currentYear)

आपके फ़ॉर्म पर, जिस मान को आप बाँधना चाहते हैं उसे Year कहा जाता है, लेकिन आपकी POST क्रिया में, आप currentYear नामक एक पैरामीटर निर्दिष्ट कर रहे हैं। एमवीसी नहीं जानता कि आप Year के मान को currentYear से बांधना चाहते हैं। मॉडल बाइंडिंग सभी आपके मॉडल पर संपत्ति के नामों के सम्मेलन पर आधारित है, जैसा कि एक फॉर्म से भेजा जा रहा डेटा है।

तो आपको बस इतना करना है कि अपनी POST विधि को इसमें बदल दें:

[HttpPost]
public IActionResult Index(string year)

ध्यान दें कि मैंने [FromForm] विशेषता को कैसे हटा दिया है। इसे ठीक से बाँधने के लिए आपको इसे यहाँ निर्दिष्ट करने की आवश्यकता नहीं है। मुझे लगता है कि आपने यह पता लगाने की कोशिश करते हुए इसे जोड़ा कि यह क्यों काम नहीं कर रहा था। इसी कारण से, आपको अपने व्यूमॉडल पर [BindProperty] विशेषता की भी आवश्यकता नहीं है - यह उस संपत्ति का नाम है जो महत्वपूर्ण है।

1
John H 16 सितंबर 2020, 11:15