Member 12788537 Ответов: 1

Как передать HTML-таблицу контроллеру, а затем в таблицу mysql


Итак, вот суть того, что я хочу сделать:
Использование MvcMovie VS2015 ASP.NET учебник по веб-сайту, я использовал представления CRUD, которые он автоматически создавал. Я также создал свой собственный класс entity Currency, который похож на мою таблицу MySql. Я загрузил данные из Mysql с помощью DataAdapter и Datatable, преобразовал DataTable в IEnumerable моего класса Currency и передал его в качестве модели для моего представления, которое в данном случае я передаю в свой индекс. Что я в конечном счете хочу сделать, так это сделать таблицу в моем представлении как редактируемую таблицу, чтобы пользователям не приходилось переходить на разные страницы только для добавления, удаления или обновления каждой записи. Я сделал это, поставив на каждый < td> моего стола
@Html.TextBox(item.CcyCode, item.CcyCode)
и в конце списка добавил несколько
@Html.TextBox("CcyCode")
чтобы обслуживать новых участников.

Моя проблема заключается в том, как передать отображаемую HTML-таблицу из моего индекса в мой контроллер, а затем соответствующим образом обновить мою таблицу MySql.

Если есть более простой и лучший подход,пожалуйста, посоветуйте.

Пока что это мои коды:

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

Пока что это мои коды:

Контроллер
private CurrencyMappingDBContext db = new CurrencyMappingDBContext();

// GET: /CurrencyMapping/
public ActionResult Index()
{
    DataTable dt = new DataTable();
    var dt2 = new MySystem.myDB_dbDataSet1.tbl_currencymappingDataTable();


    MySqlConnectionStringBuilder bldr = new MySqlConnectionStringBuilder();
    bldr.Server = "localhost";
    bldr.Database = "my_db";
    bldr.UserID = "x";
    bldr.Password = "x";
    MySqlConnection con = new MySqlConnection(bldr.ConnectionString);
    con.Open();
    MySqlDataAdapter da = new MySqlDataAdapter();
    MySqlCommand comm = new MySqlCommand("select * from tbl_currencymapping;", con);
    da.SelectCommand = comm;
    da.Fill(dt2);
    con.Close();

    var result = from row in dt2.AsEnumerable()
                 select new CurrencyMapping() { CcyName = row.CCY_NAME, CcyCode = row.CCY_CODE };

    return View(result.AsEnumerable());
}



индексированное представление
@model IEnumerable<MvcMovie.Models.CurrencyMapping>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>

@using (Html.BeginForm("Save","CurrencyMapping",FormMethod.Post))
{
    @Html.AntiForgeryToken()
    
    @Html.ValidationSummary(true)
    
    <table class="table">
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.CcyCode)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.CcyName)
            </th>
            <th></th>
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @*@Html.DisplayFor(modelItem => item.CcyCode)*@
                    @Html.TextBox(item.CcyCode, item.CcyCode)
                </td>
                <td>
                    @*@Html.DisplayFor(modelItem => item.CcyName)*@
                    @Html.TextBox(item.CcyName, item.CcyName)
                </td>
                <td>
                    @Html.ActionLink("Edit", "Edit", new { id = item.CcyCode }) |
                    @Html.ActionLink("Details", "Details", new { id = item.CcyCode }) |
                    @Html.ActionLink("Delete", "Delete", new { id = item.CcyCode })
                </td>
            </tr>
        }
        <tr>
            <td>
                @Html.TextBox("CcyCode")
            </td>
            <td>
                @Html.TextBox("CcyName")
            </td>
        </tr>

    </table>
    <div>
        <input type="submit" value="Create" class="btn btn-default" />
    </div>
    
}


Модель
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using MySystem;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace MvcMovie.Models
{
    public class CurrencyMapping
    {
        [Key]
        public string MarketCcyCode { get; set; }
        public string CurrencyName { get; set; }
    }

    public class CurrencyMappingDBContext : DbContext
    {
        public DbSet&lt;CurrencyMapping&gt; CurrencyMapping { get; set; }
    }

}

1 Ответов

Рейтинг:
1

KUMPREK

Вместо того чтобы иметь форму для полного набора данных, имейте форму для каждой строки и вызывайте соответствующий метод обновления или удаления для каждого действия строки. Таким образом, вы будете обновлять 1 одну строку за раз.