@ Robert Koritnik이 제시 하듯이이를 처리하는 가장 좋은 방법은 PartialView를 사용하는 것입니다. 저는 두 개의 분리 된 컨트롤러 액션을 제안 할 것입니다 - 원래 요청을 처리하는 액션과 AJAX 새로운 엔트리를 처리하는 액션. 두 작업 모두 동일한 논리를 호출하여 테이블의 데이터를 가져옵니다. 전자는 데이터를 다른 페이지 데이터와 함께 뷰 모델에 넣습니다. 후자는 데이터를 부분 뷰의 모델로 패키징합니다.
모델 클래스
public class PageViewModel
{
....
public IEnumerable<TableViewModel> TableData { get; set; }
}
public class TableViewModel
{
...
}
컨트롤러 코드
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index()
{
var model = new PageViewModel();
model.TableData = GetTableForUser(this.User);
return View(model);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddEntry(...)
{
... add the new entry ...
var model = GetTableForUser(this.User);
return PartialView("TableView", model);
}
private TableViewModel GetTableForUser(IIdentity user)
{
...
}
보기 코드
홈페이지보기
<% Html.RenderPartial("TableView", model.TableData); %>
<script type="text/javascript">
$('#entryForm').submit(function() {
$.post('<%= Url.Action("addentry", "controller") %>',
$('#entryForm').serialize(),
function(data) {
$('#table').replaceWith(data);
},
'html');
return false;
});
</script>
의 TableView
<table id="table">
<% foreach (var row in Model) { %>
<tr>
...
</tr>
<% } %>
</table>
[Authorize (Roles = "Admin")]과 같이 authorize 태그를 사용하여 제어기 작업을 꾸밀 수 있습니까? 이 역할의 사용자 만 행을 삽입 할 수 있습니다. JQuery는 컨트롤 메서드를 호출 할 수 있습니다. – Davy