Я работал над этим часами. У меня есть частичное представление, которое выглядит ниже
_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);
}