Передача табличного объекта из представления в контроллер с помощью asp.net mvc - PullRequest
0 голосов
/ 10 октября 2019

Я новичок в ASP.net MVC, все еще на стадии обучения :) Спасибо Advance

Я создал модель представления для заполнения табличных данных на основе выбранного PName.

Пример: для 1 проекта у нас есть 10 связанных элементов, я отображаю все строки на экране и делаю некоторые обновления в этих строках, чтобы сохранить их обратно в базу данных.

Я могу получить данные, но когда я пытаюсь отправить объект таблицы в контроллер для сохранения, он всегда дает мне ноль

Here is my ViewModel

namespace Application.ViewModel.Projects
{
    public class PUpdates
    {
        public List<FItems> items{ get; set; }

    }
}

CSHTML code
@using (Html.BeginForm("PFItems", "Projects", FormMethod.Post))
{
    <table id="test">
        <tr id="testtr">
            <th id="testth"></th>
            <th id="testth"></th>
        </tr>
        @foreach (var item in Model.FItems)
        {
            <tr id="testtr">
                <td id="testtd">
                    @Html.Label(item.Ftype)
                </td>
                <td id="testtd">
                    @Html.TextBox("test", item.AC)
                </td>
            </tr>
        }
        <tr> <td><input type="submit" value="Submit" /></td></tr>

    </table>
}

Код контроллера

   [HttpPost]
    public PartialViewResult PFItems(PFUviewmodel)
    {

        return PartialView(viewmodel);
    }

Я не могу получить объект Table для обновления

1 Ответ

0 голосов
/ 10 октября 2019

Добро пожаловать в переполнение стека:)

Чтобы привязка модели работала, вам нужно указать для полей индекс в свойстве name. Посмотрите на этот вопрос, где я ответил на очень похожий вопрос и объяснил его.

В вашем случае вам нужно сделать что-то вроде следующего:

@model Application.ViewModel.Projects.ProjectfinanceUpdate
@using (Html.BeginForm("PartialprojectFinanceItem", "Projects", FormMethod.Post))
{
    <table id="test">
        <tr id="testtr">
            <th id="testth">Financial Type</th>
            <th id="testth">Actual Cost</th>
        </tr>
        @var i =0;
        @foreach (var item in Model.tblFinanceItems)
        {

            <tr id="testtr">
                <td id="testtd">
                    @Html.Label(item.FinancialType)
                </td>
                <td id="testtd">
                    <input name="ProjectfinanceUpdate.tblFinanceItems[@i].ActualCost" value="@item.ActualCost"/>
                </td>
            </tr>
            @i++;
        }
        <tr> <td><input type="submit" value="Submit" /></td></tr>

    </table>
}

Важная часть заключается в том, что привязка модели работает на основе свойства name, и, поскольку это список, ему необходимо иметь свойство index.

Надеюсь, это поможет.

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