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

C# 如何将模型实例从表传递到模式弹出窗口?,c#,razor,C#,Razor,我有这段代码,它生成了一个记录表(名称和信息),每行都应该有一个编辑按钮,打开一个模式弹出窗口,允许编辑记录的信息部分 1.HTML视图 @model Właściwy.Models.BoardViewModel ... @foreach (var p in Model.LoansNumerable) { <tr> <td>@p.Name</td>

我有这段代码,它生成了一个记录表(名称和信息),每行都应该有一个编辑按钮,打开一个模式弹出窗口,允许编辑记录的信息部分
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>
@model Właściwy.Models.boardview model
...
@foreach(模型中的var p。可计算贷款)
{
@p、 名字
@p、 信息
编辑
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>

@使用(Html.BeginForm(“Loan”,“Controller”,FormMethod.Post))
{
编辑信息:
@Html.EditorFor(x=>x.LoanElement.Info)
}

如何将我要从第一段代码的表中编辑的记录的信息传递到模式,该模式将允许我从表中选择记录并在模式中编辑记录的一部分发送到控制器,以便将其放入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>
}
然后,将带有表单的编辑视图添加到模型中。我认为应该使用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"/>
}
@使用(Ajax.BeginForm(“PostEdit”),新的AjaxOptions
{
OnSuccess=“重新加载页面功能”,
HttpMethod=“POST”
}))
{
编辑信息:
@Html.EditorFor(x=>x.LoanElement.Info)
}
使用Javascript是最好的选择。使用razor不起作用,因为它只在显示页面之前在服务器上执行。Javascript是在页面使用后操作页面的方式。您已经开始使用脚本来显示模式,还需要脚本来获取数据(或者通过从HTML中提取内容将其从表中传输,或者使用ajax从服务器通过其ID获取相关对象,尤其是在属性多于表中所示的情况下)。
@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"/>
}