Muhammd Aamir Ответов: 1

Заполните выпадающий список из базы данных с помощью модели и вставьте выбранное значение этого DDL в базу данных с помощью отдельной модели...?


Привет всем, все вы великолепны..
я новичок в MVC, и проблема, с которой я сталкиваюсь, заключается в следующем.
у меня есть модель продукта и модель категории, и в моей базе данных у меня есть две таблицы: одна-продукт, а другая-категория, которые имеют отношение друг к другу. я создал частичное представление, в котором у меня есть выпадающий список, который заполняется из таблицы категорий с помощью модели категорий. И в дополнение к этому выпадающему списку у меня также есть некоторые другие поля ввода, такие как Product_Name, Product_Image, Product_Price. что я хочу сделать здесь, так это вставить данные модели продукта, а также выбранное значение выпадающего списка в базу данных.
в принципе, я хочу вставить данные о продукте, а также Значение выпадающего списка категорий в базу данных ... пожалуйста, покажите мне какой-нибудь код или поделитесь со мной некоторыми предложениями, чтобы я мог выйти из него. заранее спасибо

Что я уже пробовал:

Моя Модель Продукта
public class Products
    {
        public int P_ID { get; set; }
        public string P_Name { get; set; }
        public string P_Image { get; set; }
        public int P_Price { get; set; }
        public int P_CatedoryID { get; set; }
    }

Моя Категория Модель
public class Category
   {
       public int Cat_ID { get; set; }
       [Required]
       public string Cat_Name { get; set; }
   }


Мой контроллер выглядит следующим образом:

public ActionResult CreateProductsByAjaxCall()
    {
        ViewBag.Categories = db.GetALLCategoriesForProducts().Select(x => new SelectListItem { Text = x.Cat_Name, Value = x.Cat_ID.ToString() });
        return PartialView();
    }
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult CreateProductsByAjaxCall(Products product)
    {
        if (ModelState.IsValid)
        {
            db.CreateProducts(product);
        }
        return RedirectToAction("Index");
    }


Моя Частичная Точка Зрения Такова

@model WebApplication.Models.Products
           <div class="container alert-success">
               <h4>Create Products</h4>
               @using (Html.BeginForm())
               {
                   @Html.AntiForgeryToken()
                       <div class="form-horizontal">
                           @Html.ValidationSummary(true, "", new { @class="text-danger"})
                           <div class="form-group">
                              @Html.LabelFor(model => model.P_Name, "Product Name:", htmlAttributes: new { @class="control-label col-md-2"})
                               <div class="col-lg-8">
                                   @Html.EditorFor(model => model.P_Name, new { htmlattributes = new { @class="form-control"} })
                                   @Html.ValidationMessageFor(model => model.P_Name, "", new { @class="text-danger"})
                               </div>
                           </div>
                           <div class="form-group">
                               @Html.LabelFor(model => model.P_Image, "Upload Image:", htmlAttributes: new { @class = "control-label col-md-2" })
                               <div class="col-lg-8">
                                   @Html.EditorFor(model => model.P_Image, new { htmlattributes = new { @class = "form-control" ,type="file"}  })
                                   @Html.ValidationMessageFor(model => model.P_Image, "", new { @class = "text-danger" })
                               </div>
                           </div>

                           <div class="form-group">
                               @Html.LabelFor(model => model.P_Price, "Product Unit Price:", htmlAttributes: new { @class = "control-label col-md-2" })
                               <div class="col-lg-8">
                                   @Html.EditorFor(model => model.P_Price, new { htmlattributes = new { @class = "form-control" } })
                                   @Html.ValidationMessageFor(model => model.P_Price, "", new { @class = "text-danger" })
                               </div>
                           </div>

                           <div class="form-group">
                               @Html.LabelFor(model => model.P_CatedoryID, "Product Category:", htmlAttributes: new { @class = "control-label col-md-2" })
                               <div class="col-lg-8">
                                 
                                 
                                   @Html.DropDownList("Categories", (SelectList)ViewBag.RequiredKey, new { @class = "form-control" })                               

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

Sunasara Imdadhusen

Так в чем же была проблема? я вижу "@Html. LabelFor(model = & gt; model.P_CatedoryID, в частичном представлении. это означает, что он отправит полную модель продукта с идентификатором категории.

Muhammd Aamir

@Sunasara Imdadhusen, сэр его не интересуют этикетки я хочу, чтобы вставить данные из dropdownlist Для в базе и не нашел ни одного кода, который является надежным в решении моей проблемы...

Sunasara Imdadhusen

Можете ли вы получить все данные внутри этого метода CreateProductsByAjaxCall(Products product) при нажатии на кнопку Submit?

Muhammd Aamir

Сэр, когда я отлаживаю свой код, он будет отображать все значения, которые есть у продукта, но значение P_CategoryID равно " 0 " нулю, что является главной проблемой, как я могу получить точное значение выбранного выпадающего списка..

1 Ответов

Рейтинг:
12

Sunasara Imdadhusen

Привет,
Вы можете изменить идентификатор выпадающего списка на "P_CatedoryID"
от

@Html.DropDownList("Categories", (SelectList)ViewBag.RequiredKey, new { @class = "form-control" })

к
@Html.DropDownList("P_CatedoryID", (SelectList)ViewBag.RequiredKey, new { @class = "form-control" })


Muhammd Aamir

Сэр, ваше решение великолепно, теперь оно работает для меня, спасибо Вам большое, сэр, вы решаете мою проблему, с которой я столкнулся за последние 10 дней ... овации

Sunasara Imdadhusen

Спасибо за высокую оценку.