2011-10-11 2 views
0

현재 ViewBag을 사용하여 Datatable 및 일부 다른 동적 데이터를 뷰에 전달하고 있습니다. 데이터는 테이블에 사용자에게 표시되며 사용자가 선택한 열에 따라 특정 계산이 수행됩니다. 내 문제는 이러한 계산을 연결해야하기 때문에 사용자가 계산을 수행 할 때 데이터 상태가 유지되고 그 데이터에 대한 추가 계산이 가능하다는 것입니다.ASP.net mvc3 View에서 Controller로 데이터 가져 오기 C#

매번 뷰에서 현재 데이터 테이블 상태를 컨트롤러로 가져올 수 있습니까? 계산은 현재 상태에서 수행해야합니다.

차이가 있다면 뷰를 강력한 형식의 뷰로 쉽게 변경하고 데이터 테이블과 다른 동적 데이터를 추상화하는 새 개체를 만들 수 있습니다.

조언을 환영합니다.

감사합니다.

답변

0

나에게 약간의 AJAX처럼 들립니다. 상태를 서버에 다시 게시하고 (컨트롤러의 다른 방법) 필요할 때 저장할 수 있어야합니다.

MVC3에는 JSON이 포함되어있어 쉽게 사용할 수 있습니다. 그 + jQuery, 당신은 웃어야한다.

0

가능한 경우 DataTables 및 DataSets을 피하는 것이 좋습니다. 그들은 DTO의 최악의 종류로 간주되어야합니다. 왜냐하면 당신이 포함하고있는 것을 언제까지 보증 할 수 없기 때문입니다. (콜 체인을 원래의 위치로 되돌려 놓고 어디에서나 변경되지 않는 한).

적절한 뷰 모델을 사용하면 포함 된 내용을 볼 수 있기 때문에 뷰에서 보는 대신 모든 형식 논리를 넣을 수 있습니다.

난 당신이보기 모델을 사용해야하는 이유에 대한 블로그 항목 작성했습니다

: 귀하의 질문에 관해서는 http://blog.gauffin.org/2011/07/three-reasons-to-why-you-should-use-view-models/

을 : 가장 쉬운 방법은 jQuery를/Ajax를 사용하고 적절한 사용하는 경우 쉽게 JSON을 (반환하는 것입니다 보기 모델).

<script type="text/javascript"> 
$(function() { //<-- runs the script when the document has been loaded 

    $('#formid').submit(function() { // <--- hook form submit event 

     $.post('@Html.Action("CalcOne")?option='+ $('#id').val(), function(data) { 
      var result = data.result; 
      $.post('@Html.Action("CalcTwo")?option='+ result, function(data) { 
        //do third calc 
      }); 
     }); 
    }); 
}); 
</script> 

그리고 컨트롤러에

: 대답에 대한

[HttpPost] 
public ActionResult CalcOne(int option) 
{ 
    //do some calculations 
    return Json(new MyModel{ Result = option + 1 }); 
} 
+0

감사합니다, 나는 동의, 나는 일반적으로 ViewModels를 사용합니까. 그러나이 경우 데이터 테이블에 저장되고 사용자에게 표시되는 데이터는 VM 내에 쉽게 캡슐화 될 수 없습니다. 사용자가 선택한 항목과 피벗 또는 계산할 항목에 따라 열이 상당히 다를 수 있습니다. 이것이 제가이 경우에 DT를 선택한 이유입니다. –

+0

답변은 여전히 ​​적용됩니다. 예제 접근 방식과 같은 것을 사용해야합니다. – jgauffin

관련 문제