ASP.net MVC将数据从Partial View传回Main

时间:2014-06-27 08:37:02

标签: c# asp.net-mvc

我使用Ajax动态加载我的部分视图,因此条目的文本框与我的主数据列表在同一页面上,而不必在每次编辑时重新加载主数据列表。最初显示数据列表,用户可以单击一个条目将其加载到文本框中,当前处于仅查看模式,之后他们可以选择编辑来编辑条目。我遇到的问题是编辑按钮位于我的主视图中,我要编辑的项目的ID位于部分视图中。

我的主要观点

@model PresentationLayer.Models.HR.EquipmentTypes
@{
    ViewBag.Title = "Equipment";
}
@section script{
    <script type="text/javascript">
        $.ajaxSetup({
            cache: false
        }); 

</script>
}
<h2>Links</h2>
<h3>All links</h3>
<table>
    <thead>
        <tr>
            <td>Name</td>

        </tr>
    </thead>
    @foreach (var equipmentType in Model.EquipmentType)
    {
        <tr>
            <td>@Ajax.ActionLink(equipmentType.Name, "Index", "Link", new { id = equipmentType.Id }, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "linkEdit", InsertionMode = InsertionMode.Replace })</td>

        </tr>
    }
</table>

@Html.Partial("LinkEdit", Model.TypeToEdit)

@Ajax.ActionLink("Edit", "Edit", "Link", new { id = equipmentType.Id }, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "linkEdit", InsertionMode = InsertionMode.Replace })

我的部分视图

@using PresentationLayer.Models.HR
@model PresentationLayer.Models.HR.EquipmentType

<div id="linkEdit">
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)
        <fieldset>
            <legend>Edit</legend>
            @if (Model.isLocked == true)
            {
                @Html.TextBoxFor(model => model.Name)
                @Html.HiddenFor(model => model.Id, new {id="hiddenid"})
            }
            else
            {
                @Html.TextBoxFor(model => model.Name, new { disabled = "disabled", @readonly = "readonly" })

            }
            <p>
                <input type="submit" value="Save" />
            </p>
        </fieldset>
    }
</div>

我需要能够获取hiddenfor数据并且能够在我的Ajax Edit调用的deviceType.Id部分中推送id,我最初尝试使用TempData,因为这样做了我之后的事情,但是我并没有初步了解TempData的临时性。原来,要求是编辑按钮位于主布局中,但这似乎无法做到。

我是ASP.net MVC的新手,已经编写ASP.net几年了,并且在Java中使用MVC,但这让我有点停顿。希望我已经提供了足够的信息,如果不让我知道,我会尝试扩展。

由于

1 个答案:

答案 0 :(得分:0)

您的编辑按钮位于foreach循环之外。它根本没有得到任何身份。

将“编辑”按钮放在循环中以获取equipmentType.Id的值。因此,每一行都有自己的编辑按钮。在具有编辑功能的表格数据中,这是正常的事情。