Asp.Net MVC 核心 ViewModel 和模型组合问题

Asp.Net MVC Core ViewModel and Model Combining Problem

我是 Mvc 和 Core 的新手,所以我对一个视图中的模型有疑问。我现在已经有一个作为 Webforms 工作的项目。所以我建立了一个新项目并完成了最大的部分。这就是我的问题:

我附上了错误。所以有我的代码:

public class SiparisViewModel
{
    public siparis_detay SIPARISDETAYI { get; set; }
    public STOKCAMLAR STOKCAMLAR { get; set; }
}

这是我的 SiparislerController 代码:

        [HttpGet]
    public IActionResult OlcuGirisi(int id)
    {
        ViewData["Title"] = "Sipariş Detayı";
        ViewData["sipno"] = id;

        string connectionString = configuration.GetConnectionString("DefaultConnection");


        //List<STOKCAMLAR> camlistesi = new List<STOKCAMLAR>();
        using (SqlConnection baglanti = new SqlConnection(connectionString))
        {
            string kayit = $"select * from STOKCAMLAR WHERE ID ='{id}'";
            SqlCommand komut = new SqlCommand(kayit, baglanti);
            komut.CommandType = CommandType.Text;
            baglanti.Open();
            SqlDataReader reader = komut.ExecuteReader();

            if (reader.Read())
            {
                STOKCAMLAR camlar = new STOKCAMLAR();
                camlar.ID = Convert.ToInt32(reader["ID"]);
                camlar.CAMSTOKKODU = reader["CAMSTOKKODU"].ToString();
                camlar.CAMACIKLAMA = reader["CAMACIKLAMA"].ToString();

                /// goes like this.

                return View(camlar);


            }
            baglanti.Close();

        }

        return View();
    }


[HttpPost]

public IActionResult OlcuGirisi(SiparisViewModel siparisviewmodel) {

        int id = 0;
        ViewData["sipno"] = id;

        string connectionString = configuration.GetConnectionString("DefaultConnection");

        using (SqlConnection baglanti = new SqlConnection(connectionString))
        {
            int siparisno = 901123;

            string kayit = "insert into siparis_detay(Siparis_no,stok_id,stok_kodu) values (@siparisno,@stokid,@stokkodu)";

            SqlCommand komut = new SqlCommand(kayit, baglanti);

            komut.Parameters.AddWithValue("@siparisno", "901124");
            komut.Parameters.AddWithValue("@stokkodu", "C0001");
            komut.Parameters.AddWithValue("@stokid", "0");

            /// it goes like this, long codes.

            //Parametrelerimize Form üzerinde ki kontrollerden girilen verileri aktarıyoruz.
            baglanti.Open();
            komut.ExecuteNonQuery();
            baglanti.Close();

            return View("OlcuGirisi", siparisviewmodel)

这是我的观点:

@model KolaycamCore.ViewModel.SiparisViewModel

所以当我打开我的页面时 https://localhost:44364/Siparisler/OlcuGirisi/5 它给我这个错误:

An unhandled exception occurred while processing the request. InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'KolaycamCore.Models.STOKCAMLAR', but this ViewDataDictionary instance requires a model item of type 'KolaycamCore.ViewModel.SiparisViewModel'. Microsoft.AspNetCore.Mvc.ViewFeatures.ViewDataDictionary.EnsureCompatible(object value)

那我做错了什么?

您传递的模型错误,您必须传递 SiparisViewModel 而不是 STOKCAMLAR

因为您的视图需要 SiparisViewModel ,所以您 return 视图的代码如下,

 if (reader.Read())
        {
            SiparisViewModel siparis = new SiparisViewModel();
            siparis.ID = Convert.ToInt32(reader["ID"]);
            siparis.CAMSTOKKODU = reader["CAMSTOKKODU"].ToString();
            siparis.CAMACIKLAMA = reader["CAMACIKLAMA"].ToString();

            /// goes like this.

            return View(siparis);


        }