微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

由于不相关的错误,无法获取城市和地区数据

如何解决由于不相关的错误,无法获取城市和地区数据

我有一个包含 city(sehir) 和 district(il) 表的数据库。在我的注册表中,我想根据城市值获取地区数据。并且有一个地址表,其中包含这些表的外键。有一个邮政编码栏。首先,我将它设为整数值,当我这样尝试时,我的 ajax 调用工作正常,它正在动态获取所有城市和地区数据。但是当我提交表单时,我收到一条错误消息,显示“无法将类型为 'system.int32' 的对象转换为类型为 'System.String'”。我无法决定错误提到的是哪个值。我已经决定它是邮政编码,所以我已经将它的类型更改为 varchar 并在我的模型类中更新它,当我这样做时,这次我的 ajax 调用无法正常工作,问题是我的 ajax 调用有与邮政编码无关。我的代码

地址类:

public int kullaniciID { get; set; }
        public int? ulkeID { get; set; }

        [required(ErrorMessage = "Şehir girmeniz gerekmektedir!")]
        public int sehirID { get; set; }

        [required(ErrorMessage = "İlçe girmeniz gerekmektedir!")]
        public int ilceID { get; set; }

        [required(ErrorMessage = "Posta kodu girmeniz gerekmektedir!")]
        [StringLength(6,ErrorMessage = "Posta kodu maksimum 6 haneye sahip olabilir!")]
        public string postaKodu { get; set; }

        [required(ErrorMessage = "Açık adres girmeniz gerekmektedir!")]
        [MinLength(30,ErrorMessage = "Açık adres en az 30 karaktere sahip olmak zorundadır")]
        public string acikAdres { get; set; }

        [required(ErrorMessage = "İlçe gerekli")]
        public virtual tblİlce tblİlce { get; set; }

        [required(ErrorMessage = "Kullanıcı gerekli")]
        public virtual tblKullanici tblKullanici { get; set; }

        [required(ErrorMessage = "Şehir gerekli")]
        public virtual tblSehir tblSehir { get; set; }

        [required(ErrorMessage = "Ülke gerekli")]
        public virtual tblUlke tblUlke { get; set; }

使用ajax从db获取数据的方法(在用户控制器中):

public JsonResult IlIlce(int? ilID,string tip)
        {
            db = new DatabaseContext();
            List<SelectListItem> sonuc = new List<SelectListItem>();

            bool isSuccessful = true;

            try
            {
                switch (tip)
                {
                    case "ilGetir":
                        //veritabanımızdaki iller tablomuzdan illerimizi sonuc değişkenimze atıyoruz
                        foreach (var sehir in db.tblSehir.ToList())
                        {
                            sonuc.Add(new SelectListItem
                            {
                                Text = sehir.sehirAdi,Value = sehir.sehirID.ToString()
                            });
                        }
                        break;

                    case "ilceGetir":
                        //ilcelerimizi getireceğiz ilimizi selecten seçilen ilID sine göre 
                        foreach (var ilce in db.tblİlce.Where(il => il.bagliOlduguSehirID == ilID).ToList())
                        {
                            sonuc.Add(new SelectListItem
                            {
                                Text = ilce.ilceAdi,Value = ilce.ilceID.ToString()
                            });
                        }
                        break;

                    default:
                        break;
                }
            }
            catch (Exception)
            {
                //hata ile karşılaşırsak buraya düşüyor
                isSuccessful = false;
                sonuc = new List<SelectListItem>();
                sonuc.Add(new SelectListItem
                {
                    Text = "Bir hata oluştu :(",Value = "Default"
                });

            }
            //Oluşturduğum sonucları json olarak geriye gönderiyorum
            return Json(new { ok = isSuccessful,text = sonuc });
        
    }

这是我的注册视图,它包含 ajax 的 jQuery 代码

@model IWP.Models.RegisterVM

@{
    ViewBag.Title = "Register";
}

<h2>Kayıt Formu</h2>
<hr />

@if (ViewBag.Message != null)
{
    <span class="alert alert-danger">@ViewBag.Messsage</span>
}

@using (Html.BeginForm("Register","User",FormMethod.Post,new { @class = "w-100 d-flex justify-content-center" }))
{
    @Html.AntiForgeryToken()
    <div class="form-horizontal p-5 m-3 w-50 d-flex flex-column align-items-center">
        @Html.ValidationSummary(true,"",new { @class = "text-danger" })
        <div class="form-group w-100">
            <label class="form-control-label col-md-12">Kullanıcı adı</label>
            <div class="col-md-12">
                @Html.EditorFor(model => model.User.kullaniciAdi,new { htmlAttributes = new { @class = "form-control",@required = "required" } })
                @Html.ValidationMessageFor(model => model.User.kullaniciAdi,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group w-100">
            <label class="form-control-label col-md-12">Firma adı</label>
            <div class="col-md-12">
                @Html.EditorFor(model => model.User.firmaAdi,@required = "required" } })
                @Html.ValidationMessageFor(model => model.User.firmaAdi,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group w-100">
            <label class="form-control-label col-md-12">Şifre</label>
            <div class="col-md-12">
                @Html.EditorFor(model => model.User.sifre,@required = "required",@type = "password" } })
                @Html.ValidationMessageFor(model => model.User.sifre,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group w-100">
            <label class="form-control-label col-md-12">Şifre tekrar</label>
            <div class="col-md-12">
                @Html.EditorFor(model => model.User.sifreTekrar,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group w-100">
            <label class="form-control-label col-md-12">E-mail</label>
            <div class="col-md-12">
                @Html.EditorFor(model => model.User.mail,@type = "text" } })
                @Html.ValidationMessageFor(model => model.User.mail,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group w-100">
            <label class="form-control-label col-md-12">Telefon</label>
            <div class="col-md-12">
                @Html.EditorFor(model => model.User.telefon,@type = "text",@required = "required" } })
                @Html.ValidationMessageFor(model => model.User.telefon,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group w-100">
            <label class="form-control-label col-md-12">Bulunduğunuz il</label>
            <select class="form-control col-md-12" name="city" id="il" required></select>
        </div>

        <div class="form-group w-100">
            <label class="form-control-label col-md-12">Bulunduğunuz ilçe</label>
            <select class="form-control col-md-12" name="district" id="ilce" disabled required>
                <option>Bir İl Seçiniz</option>
            </select>
        </div>

        <div class="form-group w-100">
            <label class="form-control-label col-md-12">Posta kodunuz</label>
            <div class="col-md-12">
                @Html.EditorFor(model => model.Address.postaKodu,@type = "text" } })
                @Html.ValidationMessageFor(model => model.Address.postaKodu,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group w-100">
            <label class="form-control-label col-md-12">Açık adresiniz</label>
            <div class="col-md-12">
                @Html.EditorFor(model => model.Address.acikAdres,@required = "required" } })
                @Html.ValidationMessageFor(model => model.Address.acikAdres,new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group w-100">
            <div class="col-md-offset-2 col-md-12">
                <input type="submit" value="Kaydol" class="btn btn-success" />
            </div>
        </div>
    </div>
}

<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous">
</script>

<script>
    $(function () {
        $.ajaxSetup({
            type: "post",url: "/User/IlIlce",//controllerımda gidicek olan yerim
            dataType: "json"
        });
        $.extend({
            ilGetir: function () {
                $.ajax({
                    //datamızı gönderiyoruz
                    data: { "tip": "ilGetir" },success: function (sonuc) {
                        //gelen sonucumuz kontrol ediyoruz ona göre selectimze append işlemi gerçekleştiyoruz
                        if (sonuc.ok) {
                            $.each(sonuc.text,function (index,item) {
                                var optionhtml = '<option value="' + item.Value + '">' + item.Text + '</option>';
                                $("#il").append(optionhtml);
                            });

                        } else {
                            $.each(sonuc.text,item) {
                                var optionhtml = '<option value="' + item.Value + '">' + item.Text + '</option>';
                                $("#il").append(optionhtml);
                            });

                        }
                    }
                });
            },ilceGetir: function (ilID) {

                $.ajax({
                    //ekstra olarak functionumaza gelen ilID mizi gönderiyoruz
                    data: { "ilID": ilID,"tip": "ilceGetir" },success: function (sonuc) {
                        //bir önceki kayıtları temizliyorum
                        $("#ilce option").remove();
                        if (sonuc.ok) {
                            //disabled false yapıyorum
                            $("#ilce").prop("disabled",false);
                            $.each(sonuc.text,item) {
                                var optionhtml = '<option value="' + item.Value + '">' + item.Text + '</option>';
                                $("#ilce").append(optionhtml);
                            });

                        } else {
                            $.each(sonuc.text,item) {
                                var optionhtml = '<option value="' + item.Value + '">' + item.Text + '</option>';
                                $("#ilce").append(optionhtml);

                            });
                        }
                    }
                });
            }
        });
        //ilgetirimizi çalıştıyoruz
        $.ilGetir();
        //il selectimizde değişiklik olduğunda çalışacak func
        $("#il").on("change",function () {
            //seçili olan id alıyoruz
            var ilID = $(this).val();
            //seçili olan idmizi ilceGetir'imze gönderiyoruz
            $.ilceGetir(ilID);
        });
    });
</script>

最后是我的用户模型:

public partial class tblKullanici
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2214:DoNotCalloverridableMethodsInConstructors")]
        public tblKullanici()
        {
            this.tblBagis = new HashSet<tblBagis>();
            this.tblAdres = new HashSet<tblAdres>();
            this.tblSiparis = new HashSet<tblSiparis>();
        }
    
        public int kullaniciID { get; set; }

        [required(ErrorMessage = "Kullanıcı adı girmeniz gerekmektedir!")]
        [StringLength(30,MinimumLength = 6,ErrorMessage = "Kullanıcı adınız 6 ila 30 karakter arasında olmak zorundadır!")]
        public string kullaniciAdi { get; set; }

        [required(ErrorMessage = "Firma adı girmeniz gerekmektedir!")]
        [StringLength(70,ErrorMessage = "Firma adınız en fazla 70 karakter olabilir!")]
        public string firmaAdi { get; set; }

        [required(AllowEmptyStrings = false,ErrorMessage = "Şifre girmeniz gerekmektedir!")]
        [DataType(DataType.Password)]
        [StringLength(35,ErrorMessage =("Şifreniz 6 ila 35 karakter arasında olmak zorundadır"))]
        public string sifre { get; set; }

        [NotMapped]
        [required(ErrorMessage = "Bu alan gereklidir!")]
        [Compare("sifre",ErrorMessage = "Şifreler uyuşmamaktadır!")]
        public string sifreTekrar { get; set; }

        [required(ErrorMessage = "E-mail girmeniz gerekmektedir!")]
        [DataType(DataType.EmailAddress)]
        [StringLength(70,ErrorMessage = "E-mail en fazla 70 karaktere sahip olabilir!")]
        public string mail { get; set; }

        [required(ErrorMessage = "Telefon numarası girmeniz gerekmektedir!")]
        [MaxLength(16,ErrorMessage = "Telefon numaranız en fazla 16 haneli olabilir!")]
        public string telefon { get; set; }

        public System.DateTime olusturulmaTarihi { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<tblBagis> tblBagis { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<tblAdres> tblAdres { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<tblSiparis> tblSiparis { get; set; }
    }

区(ilce)模型:

public partial class tblİlce
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2214:DoNotCalloverridableMethodsInConstructors")]
        public tblİlce()
        {
            this.tblAdres = new HashSet<tblAdres>();
        }
    
        public int ilceID { get; set; }
        public string ilceAdi { get; set; }
        public int bagliOlduguSehirID { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<tblAdres> tblAdres { get; set; }
    }

城市(sehir)模型:

public partial class tblSehir
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2214:DoNotCalloverridableMethodsInConstructors")]
        public tblSehir()
        {
            this.tblAdres = new HashSet<tblAdres>();
        }
    
        public int sehirID { get; set; }
        public string sehirAdi { get; set; }
    
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<tblAdres> tblAdres { get; set; }
    }

注册操作:

[HttpPost]
        public ActionResult Register(RegisterVM model)
        {
            tblKullanici user = null;
            tblAdres address = null;

            if(model != null)
            {
                db = new DatabaseContext();
                user = model.User;
                address = model.Address;
                db.tblKullanici.Add(user);
                db.tblAdres.Add(address);

                db.SaveChanges();
                return RedirectToAction("Index","App");
            }

            ViewBag.Message = "Kayıt işlemi sırasında hata oluştu!";
            return View(model);
            
        }

感谢大家从现在开始提供的任何帮助..

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。