我使用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,但这让我有点停顿。希望我已经提供了足够的信息,如果不让我知道,我会尝试扩展。
由于
答案 0 :(得分:0)
您的编辑按钮位于foreach循环之外。它根本没有得到任何身份。
将“编辑”按钮放在循环中以获取equipmentType.Id的值。因此,每一行都有自己的编辑按钮。在具有编辑功能的表格数据中,这是正常的事情。