मेरे पास एक ऐसा फॉर्म है जो एक क्रिया को पोस्ट करता है:

 public ActionResult Index()
    {
        CheckDataVM vm = new CheckDataVM();
        vm.SerialNumbers = GetAllSerials();
        vm.CustomerNames = GetAllCustomers();
        vm.DateFrom = DateTime.Now.AddDays(-1);
        vm.DateTo = DateTime.Now;

        return View(vm);
    }       

    [HttpPost]
    public ActionResult Index(CheckDataVM v)
    {
        CheckDataVM vm = new CheckDataVM();
        vm.SerialNumbers = GetAllSerials();
        var s = vm.SerialNumbers.First().Text.ToString();
        vm.Channels = GetAllChannels(s);

        vm.DateFrom = DateTime.Now.AddDays(-1);
        vm.DateTo = DateTime.Now;

        return View(vm);
    }

मेरे रेजर व्यू में, मेरे पास पोस्ट है:

@using (Html.BeginForm("Index", "CheckData", FormMethod.Post, new { id = "SerialsForm" }))
{
    <div class="card-body" style="font-size: small;">
        <div class="form-group">
            @Html.DropDownListFor(x => x.SelectedSerial, Model.SerialNumbers, new { @class = "form-control form-control-sm" })
            <input type="submit" value="Submit" />
        </div>
    </div>
} 

दृश्य मॉडल है:

 public class CheckDataVM
    {         
        public string CustomersName { get; set; }
        public string SelectedSerial { get;set; }

        [Display(Name="Select a serial number")]
        public IEnumerable<SelectListItem> SerialNumbers { get; set; }
    }  

ड्रॉपडाउन काम करते हैं, लेकिन जब मैं फॉर्म जमा करता हूं तो केवल एक चीज जो मुझे वापस मिलती है वह है ऑब्जेक्ट का नाम (सीरियल नंबर) कुंजी के रूप में।

मैं ड्रॉपडाउन सूची से चयनित आइटम प्राप्त करने में सक्षम होना चाहता हूं और इसे इंडेक्स एक्शन के एचटीपीपोस्ट में फॉर्मकोलेक्शन में पास करना चाहता हूं। मेरे जीवन के लिए, मैं इसे काम पर नहीं ला सकता!

मैं 'ग्राहक डीडीएल' नामक एक कुंजी और उसके मूल्य को देखने की उम्मीद कर रहा हूं। उदाहरण के लिए, यदि मेरे पास देशों से भरा ड्रॉपडाउन था और मैं इंग्लैंड को चुनता हूं, तो मुझे इंग्लैंड के फॉर्मकोलेक्शन में एक मूल्य वापस आने की उम्मीद है।

मैं क्या गलत कर रहा हूं?

0
The OrangeGoblin 13 सितंबर 2018, 16:33

1 उत्तर

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

पोस्टबैक का मान इस बात पर निर्भर करता है कि आप "SelectListItem" कैसे बनाते हैं, आपके मामले में यह "GetAllSerials ()" विधि में है

  vm.SerialNumbers = serialNumbers.Select(serial => new SelectListItem
        {
            Selected = serial.id == vm.SelectedSerial ? true : false,
            Text = serial.Name,
            Value = serial.Name
        }).ToList();
1
The OrangeGoblin 24 सितंबर 2018, 07:33