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

时间:2017-07-14 12:41:44

标签: c# razor

我有这段代码,它生成一个记录表(名称和信息),每行应该有一个编辑按钮,打开一个模态弹出窗口,允许编辑记录的信息部分。
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>

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

1 个答案:

答案 0 :(得分:1)

我认为您应该在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"/>
}