2013-12-09 3 views
0

다운로드 가능한 CSV를 만들려고합니다. 내가 겪고있는 문제는보기에서 컨트롤러로 데이터를 올바르게 전달하는 방법을 확실히 알 수 없다는 것입니다.보기에서 모델을 컨트롤러로 보내 CSV로 내보내기

내 모든 데이터는 CSV에 @ Model.Table 안에 있습니다. 문제는 데이터를 제 컨트롤러로 제대로 전달하는 방법을 잘 모르겠습니다. 아래 js에서 csvData = @ Model.Table.ToCsv()를 사용하여이 작업을 수행하려고합니다. 이것은 끔찍하게 실패하므로 제대로 어떻게하는지 잘 모릅니다.

<div class="btn btn-default pull-right" id="dispoCSV"> 
    <i class="icon-file-alt"></i> 
    Disposition Report</div> 
<script> 
    $("#dispoCSV").click(function() { 
     var csvData = @Model.Table.ToCsv(); 
     $.post("Respondent/DownloadCSV", function (data) { 
      csvData 
      }) 
     }); 
</script> 

나는이 장애물을 통과 생각하면 내가 쉽게 firgure 수 있다고 생각합니다 우리의 내 DownloadCSV 방법은 CSV로이 설정 만드는 방법.

+1

당신은 단지 양식을 필요로 제출. 여기서 바퀴를 다시 발명하려고하는 것 같습니다. – melancia

+0

어떻게 테이블을 생성합니까? – Kami

+0

불행하게도 이미 폼에 중첩되어 있습니다. – allencoded

답변

0

전체 데이터를 다시 전달하는 대신 데이터를 생성하는 데 사용할 수있는 필터 조건을 전달해야합니다. 그리고 Action 메서드에서이 기준을 읽고 데이터를 생성하고 UI를 다시 CSV 형식으로 보냅니다.

+0

에 전달되는 json을 사용하여 테이블을 생성하고 있으므로 데이터에 액세스하십시오. 보기에 표시합니다. 그런 다음 클릭 버튼을 사용하여 컨트롤러 액세스 데이터로 다시 이동하여 csv를 입력하십시오. 한 번 데이터에 액세스하는 것이 더 쉬울 것 같습니까? – allencoded

1

보기에서 CSV로 변환 할 필요가 없다고 생각합니다. 귀하의 컨트롤러가 그렇게 할 수 있습니다. 나는 이런 식으로 시도합니다 :

모델 :

public class YourModel { 
    public YourDataType Table { get; set; } 
} 

보기 :

@model YourModel 

@using (Html.BeginForm("Submit", "YourController", FormMethod.Post)) { 
    // Put your model properties in the form so that they get passed to the controller on form submit; 
    // use @Html.HiddenFor if you want to hide them from being displayed. 
    // Since your table property has nested properties, you probably need a custom editor template for this. 
} 

컨트롤러 :

public class YourController : Controller { 

    // Include an action here to display your view 

    [HttpPost] 
    public ActionResult Submit(YourModel model) { 
     var csvData = model.Table.ToCsv(); // assuming you have this method already since it's in your code above 
     // Do something with the data and return a view 
    } 
} 
관련 문제