Получить обновленные данные из редактора частичного представления для и передать контроллеру - PullRequest
2 голосов
/ 01 июля 2019

Я работал над этим часами. У меня есть частичное представление, которое выглядит ниже

_Partial.cshtml

@model project.Jobs
@using (Html.BeginCollectionItem("Jobs"))
{
<tr id="jobrow">
<td>
    @Html.HiddenFor(modelItem => modelItem.JobId)
    @Html.EditorFor(modelItem => modelItem.Description, new { htmlAttributes = new { @class = "" } })
</td>
<td>
    @Html.EditorFor(modelItem => modelItem.FlatRate, new { htmlAttributes = new { @class = "", type = "number", min = "0.00" } })
</td>
<td>
    @Html.EditorFor(modelItem => modelItem.StandardHour, new { htmlAttributes = new { @class = "", type = "number", min = "0.00" } })
</td>
<td>
    @Ajax.ActionLink("Click Me", "AddRepairOrderJobs", "RepairOrderWizard", Model, new AjaxOptions { InsertionMode = InsertionMode.InsertAfter, UpdateTargetId = "rodetailrowdata", HttpMethod = "POST" })

</td>
</tr>
}

Здесь я отображаю частичное представление

Main View.cshtml

 @model project.MainViewModel
 @using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <table id="mygrid" class="table">
   <thead>
       <tr>
           <th>Description</th>
           <th>Flat Rate</th>
           <th>Standart Time</th>
           <th>Charge To</th>
           <th></th>
       </tr>
   </thead>
   <tbody id="rodetailrowdata">
       @foreach (var item in Model.MainViewModel.Jobs)
       {
            @Html.Partial("_Partial", item)
       }
   </tbody>
   </table>

используя метод действия ниже, я могу передать существующие данные из редактора для тегов из частичного представления в контроллер, используя ссылку ajax.action выше

Controller.cs

[HttpPost]
    public PartialViewResult AddRepairOrderJobs(Jobs job)
    {
        var x = new OtherModel(){
            JobId = job.JobId,
            Name = job.Description,
            SelectedRate = job.FlatRate
            StandardHour = job.StandardHour
        }
        return PartialView("_HeaderDetailList", x);
    }

Теперь, что я хочу сделать, это когда я изменяю значения editorfor, я получаю обновленные данные из _Partial.cshtml вместо старых, когда я нажимаю на ссылку action, но я не могу заставить это работать. Как я могу сделать это, не выполняя как можно больше «хакерских работ»?

Редактировать: я добавил метод действия для загрузки списка заданий

public ActionResult NewRecord()
    {
        var add= new MainViewModel()
        {
            //other data,
            Jobs = jobrepository.GetAllJobs()
        };
        return View(add);
    }

1 Ответ

0 голосов
/ 04 июля 2019

Я решил свою проблему, используя подсказку @ Tomato32. Мне просто нужно было поместить модель Джобса и выполнить цикл через нее в главном представлении вместо частичного представления, а затем передать мою модель представления в качестве параметра вместо модели заданий. Теперь я получаю все, включая обновленные данные Джобса. Я могу включить код, если кому-то это нужно.

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