[英]Changing @Html.DisplayFor item after successful ajax call
所以标题几乎说明了我要做什么,我很确定自己走对了,或者至少我这么认为。 但是,直到我重新加载整个视图后,该值才会更新
的HTML:
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.AktivBalance)
</th>
<th>
@Html.DisplayNameFor(model => model.BarBalance)
</th>
<th>
@Html.DisplayNameFor(model => model.HasAllInclusive)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
<span class="changeaktbalance">
@Html.DisplayFor(modelItem => item.AktivBalance)
</span>
<br />
<input style="width: 42%;" type="text" name="aktivAmount" class="viewedittext" />
<br />
<input type="button" value="Indsæt" class="vieweditaddaktiv" data-childid="@item.ChildId" />
<input type="button" value="Fratræk" class="vieweditsubaktiv" data-childid="@item.ChildId" />
<br />
</td>
<td>
@Html.DisplayFor(modelItem => item.BarBalance)
<br />
<input style="width: 42%;" type="text" name="aktivAmount" class="viewedittext" />
<br />
<input type="button" value="Indsæt" class="vieweditaddbar" data-childid="@item.ChildId" />
<input type="button" value="Fratræk" class="vieweditsubbar" data-childid="@item.ChildId" />
</td>
<td>
@Html.DisplayFor(modelItem => item.HasAllInclusive)
</td>
<td>
@Html.ActionLink("Rediger", "Edit", new { id=item.ChildId }) |
@Html.ActionLink("Detaljer", "Details", new { id=item.ChildId }) |
@Html.ActionLink("Slet", "Delete", new { id=item.ChildId })
</td>
</tr>
}
</table>
脚本:
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
// document ready
$(document).ready(function() {
$(document.body).on("click", ".vieweditaddaktiv", function () {
// test for at se om den får fat i de rigtige værdier, hvilket den gør.
//alert("amount = " + $(this).parent().children(".viewedittext").val() + " id = " + $(this).data("childid") + ".");
// værdierns sti bruges til at lave data variablen der skal videresendes. (ifølge vs bruger jeg nu de rette naming conventions i controlleren)
var data = {
Amount: $(this).parent().children(".viewedittext").val(),
Id: $(this).data("childid")
};
// Jeg kan ikke sætte breakpoint og teste koden, der sker bare ingenting? Hvorfor virker intet herfra?
$.ajax({
type: 'POST',
url: "@Url.Action("AddAktiv", "Default1")", // kalder på metoden der returnerer Json resultatet i controlleren.
data: JSON.stringify(data),
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function(returnedData) {
//alert(returnedData);
$(this).parent().children(".changeaktbalance").html(returnedData);
},
error: function() {
alert("An unexpected error has occured.");
}
});
}); // End of vieweditaddaktiv.
}); // End of document ready function.
</script>
我只需要按钮的父目录中的特定displayfor即可触发脚本,因此我需要在ajax调用成功场景中更改代码,但我不确定如何执行?
this
在jquery.ajax
成功处理程序中的jquery.ajax
指向当前请求的ajax设置对象。 如果要使用它来引用其他任何内容,请使用context
选项:
$.ajax({
context: this,
// rest of your code goes here
这样,您在成功处理程序中使用的选择器应该可以工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.