다음 부분 뷰가 있습니다. 변경 항목 이름 버튼을 클릭하면 여기에서 볼 수 있듯이 C# MVC4 Jquery Ajax Post 부분 뷰 업데이트
@using System.Data;
@using System.Dynamic;
@using System.Collections.Generic;
@using System.Linq;
@model TheMProject.Models.MyViewModel
<div id="Item_Buttons">
<h2 class="alignleft">Table 1</h2>
<p class="alignright">Item Name<input type="text" name="item_name" value="@Html.ValueFor(x => x.itemname)" class="search-query" placeholder="Search" style ="width:100px"/>
<button class="btn btn-success" id="Change_Item_Name" value="Change_Item_Name" name="action:Change_Item_Name" type="button"> Change Item Name</button>
Grade<input type="text" name="item_grade" value="@Html.ValueFor(x => x.grade)" class="search-query" placeholder="Search" style="width:100px"/>
<button class="btn btn-success" id="ChangeItemGrade" value="ChangeItemGrade" name="action:Change_Grade" type="button">Change Grade</button>
Delete Record<input type="text" name="delete_item" value="@Html.ValueFor(x => x.itemname)" class="search-query" placeholder="Search" style ="width:100px"/>
<button class="btn btn-success" id="DeleteItem" value="DeleteItem" name="action:Delete_Item" type="button">Delete Record</button>
</p>
<div style="clear: both;"></div>
</div>
<section>
<div id ="firstgrid">
<table id="TTable" class="gridTable">
<thead class="gridHead">
<tr>
@Html.DisplayFor(x => x.TColumns)
</tr>
</thead>
<tbody>
@Html.DisplayFor(x => x.TRows)
</tbody>
</table>
</div>
</section>
<section>
<form id="form1">
<div id="grid">
<table id="CTable" class="gridTable">
<thead class="gridHead">
<tr>
@Html.DisplayFor(x => x.Columns)
</tr>
</thead>
<tbody>
@Html.DisplayFor(x => x.Rows)
</tbody>
</table>
</div>
</form>
</section>
<section>
<div id ="Display_Average">
<table id="AvgDisplayTable" class="gridTable">
<thead class="gridHead">
<tr>
@Html.DisplayFor(x => x.AvgColumns)
</tr>
</thead>
<tbody>
@Html.DisplayFor(x => x.AvgRows)
</tbody>
</table>
</div>
</section>
<button class="btn" id="SubmitAverage" value ="SubmitAverage" name="action:SubmitAverage" type="button">Submit Averages</button>
<div id="ItemNameDiv" title="Change Item Name">
@using (Html.BeginForm("ChangeItemName", "Home", "POST"))
{
<section>
Heat Name:<input type="text" name="itemName" value="@Html.ValueFor(x => x.heatname)" style ="width:100px"/>
Change to:<input type="text" name="updatedName" value="" style="width: 100px" />
<input type="button" id="ChangeItemName" name="ChangeItemName" value="Change" />
</section>
}
</div>
<div id="ItemGradeDiv" title="Change Item Grade">
@using (Html.BeginForm("ChangeGrade", "Home", "POST"))
{
<section>
Item Grade:<input type="text" name="grade" value="@Html.ValueFor(x => x.grade)" style ="width:100px"/>
Change to:<input type="text" name="updatedName" value="" style="width: 100px" />
<input type ="hidden" name="hiddenItem" value ="@Html.ValueFor(x => x.itemname)" />
<input type="submit" name="ChangeGrade" value="Change" />
</section>
}
</div>
<div id="DeleteItemDiv" title="Delete Item">
@using (Html.BeginForm("DeleteItem", "Home", "POST"))
{
<section>
Heat Name:<input type="text" name="itemName" value="@Html.ValueFor(x => x.itemname)" style ="width:100px"/>
<input type="submit" name="DeleteItem" value="Delete" />
</section>
}
</div>
은 아약스의 게시물이 jQuery로 호출됩니다
$(document).ready(function() {
$('#ChangeItemName').click(function (e) {
var tdata = $('#form1').serialize();
var origname = $('#ItemNameDiv').find('input[name="itemName"]').first().val();
var newname = $('#ItemNameDiv').find('input[name="updatedName"]').first().val();
$.ajax({
type: "POST",
data: {
mCollection: tdata,
itemName: origname,
updatedName: newname
},
url: "Home/ChangeItemName",
success: function (result) { success(result); }
});
});
function success(result) {
$('#ItemNameDiv').dialog('close');
$("#My_Partial_V").html(result);
}
});
. 완료되면 부분 뷰는 게시물의 업데이트 된 데이터로 새로 고쳐집니다. 이 게시물에 필요한 jquery를 포함하여 다른 버튼을 클릭 할 때까지 아래에 표시된 div 표시를 숨기는 등의보기에서 다른 작업을 수행하는 데 필요한 다른 스크립트가 있습니다. 이전에 언급 한 아약스 게시물을 처음 수행 한 후 같은 버튼을 클릭하면 게시물이 한 번에 두 번, 세 번 클릭 된 번에 네 번 실행됩니다.
Ive가 스크립트 참조를 이동하려고 시도했습니다.
<script src="@Url.Content("~/Scripts/partialitemscripts.js")"
type="text/javascript"></script>
부분 뷰 외에도 부분 파일과 레이아웃 파일을 포함하는 뷰에 포함되지 않습니다. 이 두 가지 방법을 시도하면 부분 뷰가 새로 고쳐질 때까지 모든 스크립트가 제대로로드되어 모든 스크립트가 호출/참조되지 않습니다.
그래서 내가 배치해야합니다, 이해 보장하기 위해 <스크립트 유형 = "텍스트/자바 스크립트"> $ (문서) .ready (함수() { ajaxCallBack(); }); 부분보기를 렌더링 할 기본 페이지의 div에 그 위의 주 화면 상단 부근. ajaxCallBack 메서드와 success 메서드를 partialschemscripts.js에 두십시오. – HendPro12
그래, 그렇게 해보았습니다. 그것은 아마도 최선의 해결책은 아니지만 그것이 나를 위해 일합니다. 또한 $ ('# ChangeItemName')을 사용하는 것이 좋습니다. on ('click', function (e) {...});'언급 된 @idipous와 비슷합니다. –