Проблемы с записью данных в две таблицы одновременно в MVC - PullRequest
1 голос
/ 12 июня 2019

Я работаю над проблемой MVC, когда пользователь вводит в форму данные, которые будут храниться в базе данных sql. База данных уже существует, имеет много таблиц и связана с моим asp.net. Я хочу, чтобы входные данные были сохранены в правильной таблице и правильной строке. Вот моя попытка кода. Данные тривиальны.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using My_App.Models;

namespace My_App.Controllers
{
    public class RegistrationController : Controller
    {
        public ActionResult Registration()
        {
            Database1 db = new Database1();

            List<User> list = db.User.ToList();
            ViewBag.UserList = new SelectList(list, "id_car", "id_user", "name_user");

            return View();
        }

        [HttpPost]
        public ActionResult Registration(Car model)
        {
            try
            {
               Database1 db = new Database1();

            List<User> list = db.User.ToList();
            ViewBag.UserList = new SelectList(list, "id_car", "id_user", "name_user");

                Car cars = new Car();
cars.id_car = model.id_car;
cars.id_city = model.id_city;
cars.car_name = model.car_name;
db.Car.Add(cars);
db.SaveChanges;

      User users = new User();
users.id_car = model.id_car;
users.id_user = model.id_user;
users.name_user = model.name_user;
db.User.Add(users);
db.SaveChanges;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return View(model);
        }

    }
}

View



        @model My_app.Models.Car
        @using (Html.BeginForm("Registration", "Registration", FormMethod.Post))
    {   
     @Html.AntiForgeryToken()
        
                 @Html.ValidationSummary(true)
            
                @Html.LabelFor(model=>model.id_car , new { @class = "control-label col-md-2" })
                

                    @Html.EditorFor((model=>model.id_car  )
                    @Html.ValidationMessageFor((model=>model.id_car  )
                
            


            
                @Html.LabelFor(model => model.car_name, new { @class = "control-label col-md-2" })
                
                   @Html.EditorFor(model => model.car_name)
                    @Html.ValidationMessageFor(model => model.car_name)
                
            

            
                @Html.LabelFor(model => model.name_user, new { @class = "control-label col-md-2" })
                
                    @Html.EditorFor(model => model.name_user)
                    @Html.ValidationMessageFor(model => model.name_user)
                
            

            
                
                    
                
            
          }

</p>

<pre><code>SELECT TOP (1000) [id_car]
    ,[id_city]
    ,[car_name]
  FROM [CarUsers].[dbo].[Car]

SELECT TOP (1000) [id_car]
    ,[id_user]
    ,[name_user]   
 FROM [CarUsers].[dbo].[User]

Когда я пишу только контроллер для Car, он работает (данные записываются в мою таблицу SQL), но когда я пишу только для пользователя, он не работает (я изменил модель на User) Я также пытался с MultipleClass .. также не работает. Я не могу понять ситуацию проблемы и где происходит ошибка. Я хочу, чтобы данные записывались в две таблицы одновременно. Спасибо за ваше время и полезные советы. С наилучшими пожеланиями.

1 Ответ

0 голосов
/ 12 июня 2019

Спасибо. Это отличная статья :) Она многое объясняет

Я изменил код на

Контроллер

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using My_App.Models;

namespace My_App.Controllers
{
    public class RegistrationController : Controller
    {
[HttpPost]
        public ActionResult Registration()
        {
            Database1 db = new Database1();
              List<MyClass> MyClassList = new List<MyClass>();

            var details = (from c in db.Car
                           join u in db.User on c.id_car equals u.id_car
                           select new { c.id_car, c.id_city, c.car_name, u.id_user,u.name_user }).ToList();
            foreach (var item in details)
            {
                MyClass mC = new MyClass();
                mC.id_car = item.id_car;
                mC.id_city = item.id_city;
                mC.car_name = item.car_name;
                mC.id_user = item.id_user;
                mC.name_user = item.name_user;
                MyClassList.Add(mC); MyClassList.Add(mC);
              }

           return View(MyClassList);
        }

Просмотр

 @model IEnumerable<My_app.Models.MyClass>
            @using (Html.BeginForm("Registration", "Registration", FormMethod.Post))
        {   
         @Html.AntiForgeryToken()

                     @Html.ValidationSummary(true)
        <div class="form-horizontal">


            @Html.ValidationSummary(true)

                 @foreach (var item in Model)
            {

                <div class="form-group">
                @Html.LabelFor(modelItem => item.id_car , new { @class = "control-label col-md-2" })
                <div class="col-md-10">

                    @Html.EditorFor(modelItem => item.id_car )
                    @Html.ValidationMessageFor(modelItem => item.id_car )
                </div>
            </div>

            <div class="form-group">
                @Html.LabelFor(modelItem => item.car_name , new { @class = "control-label col-md-2" })
                <div class="col-md-10">

                    @Html.EditorFor(modelItem => item.car_name )
                    @Html.ValidationMessageFor(modelItem => item.car_name )
                </div>
            </div>


            <div class="form-group">
                @Html.LabelFor(modelItem => item.name_user, new { @class = "control-label col-md-2" })
                <div class="col-md-10">

                    @Html.EditorFor(modelItem => item.name_user)
                    @Html.ValidationMessageFor(modelItem => item.name_user)
                </div>
            </div>
    }

Теперь мне нужно выяснить, как разместить и сохранить входные данные из MYClass в одну таблицу (Автомобиль и Пользователь).Я думаю, что проблема скрыта в контроллере и связан с.Добавить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...