我在我的视图中生成了一个html表,有没有人知道我可以使用的任何帮助器,以便可以在线编辑其中一个字段。
查看:
<table>
<caption>Configuration values for current management group</caption>
<thead>
<tr>
<th scope="col">Device Type</th>
<th scope="col">Section</th>
<th scope="col">Name</th>
<th scope="col">Value</th>
<th scope="col">Operation</th>
</tr>
</thead>
<tbody>
@foreach (var param in Model.ParamData)
{
<tr>
<td>@param.DeviceType</td>
<td>@param.Group</td>
<td>@param.Name</td>
<td>@param.Value</td>
<td>@(param.IsMerge ? "Merge" : "Delete")</td>
</tr>
}
</tbody>
</table>
正如您所看到的,这里没有什么特别之处,我想要一个与Web表单gridview类似的编辑列。唯一要编辑的字段是值,它始终是一个文本框。
我相信人们之前必须这样做,但我见过的唯一例子是mvc 1。
我可以使用jquery来解决问题,但我确定必须有大量的例子并且不想重新发明轮子。
答案 0 :(得分:0)
如果有兴趣的话,我自己也做过:
@foreach (var param in Model.ParamData)
{
<tr>
<td>@param.DeviceType</td>
<td>@param.Group</td>
<td>@param.Name</td>
<td>
<div class="@("ViewValueDiv_" + param.ParamaterValueId)">
@param.Value
</div>
<div class="@("EditValueDiv_" + param.ParamaterValueId)" style="display:none;">
<input type="text" name="@("EditValue_" + param.ParamaterValueId)" value="@param.Value" class="@("Input_" + param.ParamaterValueId)" />
</div>
</td>
<td>@(param.IsMerge ? "Merge" : "Delete")</td>
<td>
<div class="@("EditButtonDiv_" + param.ParamaterValueId)">
<input type="button" value="Edit" class="EditButton" Id="@param.ParamaterValueId" />
</div>
<div class="@("UpdateCancelButtonDiv_" + param.ParamaterValueId)" style="display:none;">
<input type="button" value="Update" class="UpdateButton" id="@("U" + param.ParamaterValueId)" />
<input type="button" value="Cancel" class="CancelButton" id="@("C" + param.ParamaterValueId)" />
</div>
</td>
</tr>
}
$(document).ready(function () {
$(".EditButton").click(function () {
var id = $(this).attr('id');
$(".ViewValueDiv_" + id).hide();
$(".EditValueDiv_" + id).show();
$(".EditButtonDiv_" + id).hide();
$(".UpdateCancelButtonDiv_" + id).show();
oldvalue = $(".Input_" + id).val();
});
$(".CancelButton").click(function () {
var id = $(this).attr('id').substr($(this).attr('id').indexOf("C") + 1);
$(".ViewValueDiv_" + id).show();
$(".EditValueDiv_" + id).hide();
$(".EditButtonDiv_" + id).show();
$(".UpdateCancelButtonDiv_" + id).hide();
$(".Input_" + id).val(oldvalue);
});
$(".UpdateButton").click(function () {
var id = $(this).attr('id').substr($(this).attr('id').indexOf("U") + 1);
NewValue = $(".Input_" + id).val();
if (NewValue) {
$.ajax({
url: "/Terminals_configuration/UpdateConfigValue",
data: { valueId: id, newValue: NewValue },
dataType: "json",
type: "POST",
error: function () {
alert("An error occurred.");
},
success: function (data) {
$(".ViewValueDiv_" + id).show();
$(".EditValueDiv_" + id).hide();
$(".EditButtonDiv_" + id).show();
$(".UpdateCancelButtonDiv_" + id).hide();
$(".ViewValueDiv_" + id).html(NewValue);
}
});
} else {
alert("You didn't supply a new value");
}
});
});