首页 > 解决方案 > 如何从另一个下拉列表列出的下拉列表选择中获取值

问题描述

我有一个使用另一个下拉列表的下拉列表。我面临的问题是我能够检索第一个下拉列表的选择,但不能检索第二个。

这是我正在查看的脚本

$(function() {
  $("#Off").change(function() {
    $.get("/Reference/GetSubjectById", {
      id: $("#Off").val()
    }, function(data) {
      $("#Su").empty() $.each(data, function(mail, row) {
        $("#Su").append(" <option value='" + row.Id_Subject + "'>" + row.Subject_Matter + "</option>")
      });
    })
  });
});

这是我的控制器

public ActionResult Mail()
    {
        fillingEntities db = new fillingEntities();
        ViewBag.OfficeName = new SelectList(db.offices, "Office_Id", "Office_Name");
        //ViewBag.SubjectName = new SelectList(db.subjects, "Subject_Id", "Subject_Matter");
        MailViewModel mailView = new MailViewModel();
        mailView.date = DateTime.Now;
        return View(mailView);
    }

    public JsonResult GetSubjectById(int id)
    {
        fillingEntities db = new fillingEntities();
        db.Configuration.ProxyCreationEnabled = false;
        return Json(db.subjects.Where(m => m.Office_Id == id), JsonRequestBehavior.AllowGet);
    }

    public ActionResult New(int newref)
    {

        return View();
    }

    public ActionResult Save(MailViewModel mail)
    {
        fillingEntities db = new fillingEntities();
        //subject mySubject = db.subjects.Where(m => m.Subject_Id == mail.id_subject).FirstOrDefault();
        string subValue = Request.Form["Su"].ToString();
        reference lastRef =  db.references.ToList().LastOrDefault();
                 

        int numeroRef = (lastRef.Opening_Ref+1);
        //string referenceNumber = mySubject.Subject_Code + "/" + numeroRef + "/" + "2020";
        string referenceNumber = subValue + "/" + numeroRef + "/" + "2020";
        mail.NewReference = referenceNumber;
        

        reference newRef = new reference();
        newRef.Opening_Ref = numeroRef;
        db.references.Add(newRef);
        db.SaveChanges();

        mail newMail = new mail();
        newMail.Location = mail.location;
        newMail.Mail_Year = (short) DateTime.Now.Year;
        newMail.Mail_Date = DateTime.Now.Date;
        newMail.Addressed_Name = mail.addTo;
        newMail.Addressed_Department = mail.addDep;
        newMail.Addressed_Organisation = mail.addOrg;
        newMail.Mail_Subject = mail.subject;
        newMail.Reference_Id = newRef.Reference_Id;
        newMail.Office_Id = mail.id_office;
        db.mails.Add(newMail);
        db.SaveChanges();


        return View("Save", mail);
    }

最后是我的视图模型

namespace FillingSystem.ViewModel
{
    public class MailViewModel
    {
        public string addTo { get; set; }
        public string addOrg { get; set; }
        public string addDep { get; set; }
        public string subject { get; set; }
        public string location { get; set; }
        public DateTime year { get; set; }
        public DateTime date { get; set; }
        public IEnumerable<office> offices { get; set; }
        public int id_office { get; set; }
        public int id_subject { get; set; }
        public IEnumerable<subject> subjects { get; set; }
        public int Opening_Ref { get; set; }
        public string NewReference { get; set; }

    }
}

标签: javascriptc#asp.netmodel-view-controller

解决方案


推荐阅读