Как связать значение из базы данных с конкретным <td>элементом в ASP.Net MVC - PullRequest
0 голосов
/ 03 мая 2019

Я хотел бы привязать значения базы данных к одному элементу <td> в таблице в моем представлении.Являются ли они способом, которым я могу использовать это без необходимости использовать IEnumerable, насколько я понимаю, если вам нужно связать значения базы данных со ВСЕЙ таблицей, они будут применяться к элементам <td> в таблице.Есть ли альтернатива, кроме использования цикла for, поскольку это всего лишь один элемент?Я приложил изображение для таблицы базы данных со значениями, а также то, что я ожидаю в пользовательском интерфейсе.

В моем Register.cshtml у меня есть:

@model MIHR_SYSTEM.Models.TaxTable.Zimra
@model IEnumerable<MIHR_SYSTEM.Models.TaxTable.Tier>
....
....
 <table class="table" class="width100">
    <tr class="graybg">
        <th>Tax Bracket</th>
        <th>Min Salary</th>
        <th>Max Salary</th>
        <th>PAYE</th>
        <th>Deduction</th>
    </tr>
    <tr>
    @foreach (var item in Model)
    {
        <td>
        @item.TierName
        </td>
    }
    <td>
        @Html.EditorFor(model => model.MinSalary, new { htmlAttributes = new { @class = "form-control", @placeholder = "USD" } })
        @Html.ValidationMessageFor(model => model.MinSalary, "", new { @class = "text-danger" })
    </td>
    <td>
        @Html.EditorFor(model => model.MaxSalary, new { htmlAttributes = new { @class = "form-control", @placeholder = "USD" } })
        @Html.ValidationMessageFor(model => model.MaxSalary, "", new { @class = "text-danger" })
    </td>
</table>

TierId являетсявнешний ключ в таблице Zimra и значение сохраняется как таковое, но в представлении TierName - это то, что я действительно хочу отобразить.Само представление будет иметь две модели: Tier и Zimra.Как включить привязку значения из базы данных к конкретному элементу в таблице.На самом деле, я получаю исключения для всех других элементов <td>, которые не входят в цикл foreach:

'myElement' не содержит определения для myElement и недоступенметод расширения 'myElement', принимающий первый аргумент типа 'myElement'

Я получаю TierNam e с использованием необработанного SQL в моем контроллере как:

[HttpPost]
public ActionResult ConfigureZimbabweTax(FormCollection formcollection)
{
    List<Models.TaxTable.Tier> tiers = new List<Models.TaxTable.Tier>();

    try
    {
        using (SqlConnection conn = new SqlConnection(Helpers.DatabaseConnect))
        {
            SqlCommand cmd = new SqlCommand("SELECT * FROM Tier", conn);

            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                Models.TaxTable.Tier parameter = new Models.TaxTable.Tier();

                parameter.TierId = Convert.ToInt32(dr["TierId"]);
                parameter.TierName = Convert.ToString(dr["TierName"]);

                tiers.Add(parameter);
            }

        }

        Models.TaxTable.Zimra zimra = new Models.TaxTable.Zimra();

Как этоЯ извлекаю эти значения в SelectedListItem, что не совсем то, что я хочу, так как я хочу связать с <td>, а не HtmlDropDownFor элементом.Я также не уверен, как я могу достичь того же:

[HttpPost]
public ActionResult ConfigureZimbabweTax(FormCollection formcollection)
{
    List<Models.TaxTable.Tier> tiers = new List<Models.TaxTable.Tier>();

    try
    {
        using (SqlConnection conn = new SqlConnection(Helpers.DatabaseConnect))

Tier

ZIMRA

enter image description here

...