Ошибка контроллера ASP. NET при записи в базу данных. - PullRequest
0 голосов
/ 03 февраля 2020

Скажите, почему я получаю такую ​​ошибку при использовании метода db.Test.Add (view); Ошибка: CS1503 Аргумент 1: невозможно преобразовать из «D C .Models.View» в «D C .Models.SaveComments.Test». Я пытаюсь записать данные в базу данных, код:

Мой контроллер:

namespace DC.Controllers
{
    public class CommentController : Controller
    {
        public ActionResult SaveRecord(View model)
        {
            try
            {
                DataComment db = new DataComment();
                View view = new View();
                view.Id = model.Id;
                view.Name = model.Name;

                db.Test.Add(view);

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return RedirectToAction("Index");
        }
    }
}

Модели:

    namespace DC.Models.SaveComments
    {
        public class DataComment : DbContext
        {
            public DataComment()
                : base ("CC")
            { }
            public DbSet<Test> Test { get; set; }
        }
    }

namespace DC.Models.SaveComments
{
    public class Test
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

namespace DC.Models
{
    public class View
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

И на html -страница:

<body>
    @using (Html.BeginForm("SaveRecord", "Comment", FormMethod.Post))
    {
    <p>Id @Html.TextBoxFor(model => model.Id)</p>
    <p>Name @Html.TextBoxFor(model => model.Name)</p>
    <input type="submit" value="Submit" class="btn-block btn-primary" />
    }
</body>

1 Ответ

1 голос
/ 03 февраля 2020

Вы сделали объект View Это должно быть проверено:

namespace DC.Controllers
{
    public class CommentController : Controller
    {
        public ActionResult SaveRecord(View model)
        {
            try
            {
                DataComment db = new DataComment();
                Test view= new Test(); //This is change
                view.Id = model.Id;
                view.Name = model.Name;

                db.Test.Add(view);

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return RedirectToAction("Index");
        }
    }
}

Еще одна вещь, их разница в пространстве имен модели, пожалуйста посмотрите на это также

Или вы можете использовать, как показано ниже:

public ActionResult SaveRecord(Test model)
        {
            try
            {
                DataComment db = new DataComment();

                db.Test.Add(model);

                db.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return RedirectToAction("Index");
        }
...