如何将模型实例从表传递到模态弹出窗口?



我有这段代码,它生成一个记录表(名称和信息(,每一行都应该有一个编辑按钮,该按钮打开一个模式弹出窗口,允许编辑记录的信息部分。
1.HTML视图

@model Właściwy.Models.BoardViewModel
...
@foreach (var p in Model.LoansNumerable)
{
<tr>
<td>@p.Name</td>
<td>@p.Info</td>
<td><button 
onclick="javascript:openModal('ModalEdit')">Edit</button></td>
</tr>

2. 相同的 cshtml 文件,但用于编辑上表中记录的模态弹出窗口代码

<div class="ModalEdit">
@using (Html.BeginForm("Loan", "Controller", FormMethod.Post))
{
<label>Edit info: </label>
@Html.EditorFor(x => x.LoanElement.Info)<br />
<input type="submit" value="Edit" class="button-
submit" formaction="~/Controller/Info/@Model.LoanElement"/>
}
</div>

如何将要从第一段代码中的表中编辑的记录信息传递到模态,这将允许我将表中的选定记录和模态中编辑的部分记录发送到控制器,以便将其放入 SQL 数据库?因为模态代码中的"Controller/Info/@Model.LoanElement"部分只传递编辑的部分,所以其余部分变为空

我认为您应该在 html 表中生成一个 ajax 链接,以便使用部分视图加载表单。像这样:

@foreach (var p in Model.LoansNumerable)
{
<tr>
<td>@p.Name</td>
<td>@p.Info</td>
<td>
@Ajax.ActionLink("Edit", "Edit", new { id = @p.Id }, new AjaxOptions()
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "idOfContainerInsideModal"
})
</td>
</tr>
}

您应该有一个"编辑"操作,使用窗体呈现部分视图。

public ActionResult Edit(int id)
{
var model = //get model from id
return PartialView("Edit", model);
}

然后,使用模型的窗体的"编辑"视图。我认为您应该使用AjaxForm,它提交值,关闭模态,并在提交数据后更新表。

@using (Ajax.BeginForm("PostEdit", new AjaxOptions
{
OnSuccess = "reload Page function",
HttpMethod = "POST"
}))
{
<label>Edit info: </label>
@Html.EditorFor(x => x.LoanElement.Info)<br />
<input type="submit" value="Edit" class="button-submit"/>
}

最新更新