2017-12-15 1 views
1

작동하지 않습니다 호출 :이동일한 컨트롤러 방법은 다시는 내 WriteupController.cs에서 나는 다음과 같은 컨트롤러 방법이

<a href="@Url.Action("Writeups", "Writeup", new { symbol = item.SecSymbol, status = item.Status, mktDate = "10/10/2010", writeupDate = "10/11/2010" }) 

를 사용하여 호출하고 적절한보기 cshtml가 표시됩니다

public async Task<ActionResult> Writeups(string symbol, string status, 
    DateTime? mktDate, DateTime? writeupDate) 
{ 
    // get datamodel 
    return View(datamodel); 
} 

. 여태까지는 그런대로 잘됐다. 페이지에는 기호가있는 드롭 다운 목록이 있습니다. 하나를 선택하면 다음과 같은 ajax 호출이 있습니다.

  $("#companiesDDL").change(function() { 
      var postdata = { "symbol": "1099.HK", "status": "A", "mktDate": "10/10/2010", "writeupDate": "10/10/2010" }; 
      $.ajax({ 
       url: '@Url.Action("Writeups", "Writeup")', 
       dataType: "json", 
       data: postdata, 
       success: function (result, status, xhr) { 
        alert("Result: " + status + " " + xhr.status + " " + xhr.statusText)     
       }, 
       error: function (xhr, status, error) {      
       } 
      }); 
     }); 

위에서 볼 수 있듯이 URL은 같습니다. 디버깅 할 때, 컨트롤러 메소드의 데이터 모델과 cshtml 뷰 자체에서 올바른 데이터를 볼 수 있습니다. 그러나 페이지가로드되지 않습니다. 즉, 새 기호에 대한 정보를 볼 수 없습니다. 이 문제를 어떻게 수정합니까?

편집 :

다음은 제 생각입니다. 명시된 바와 같이, 원래 나는 CompDescShort를 본다. 하지만 아약스에서 전화하면 안돼.

  <textarea name="editor" id="editor" rows="10" cols="80"> 
       @if (Model.Count > 0) 
       { 
         @Model.CompDescShort 
       } 
      </textarea> 

을 사용함으로써, 고정 :

 <select id="companiesDDL" class="tmpdisplay" style="margin-left: 15px;" onchange="location.href=this.value"> 
      @foreach (var item in Model.companyList) 
      { 
       <option value='@Url.Action("Writeups", "Writeup", new { symbol = item.SecSymbol, status = "A" })'>@item.SecDesc</option> 
      } 
     </select> 
+0

조치의 결과로 수행하고자하는 작업은 무엇입니까? Div에 그것을 삽입하고, 새 탭에서 열리시겠습니까? 현재 창에로드? 또는 현재 페이지의 일부분을 업데이트하기위한 정보를 받아야합니까? – Mauri

+0

편집을 참조하십시오. 유사한 텍스트 영역 등이 있습니다. 선택한 심볼에 대한 데이터가있는 동일한 페이지를 표시하기 만하면됩니다. – Scott

+0

게시물 뒤에'alert()'이 부딪치나요? – DiskJunky

답변

1

난 당신이 항목을 선택했지만 원래 아약스 접근 방식을 취하고 전체 페이지 새로 고침을 수행하는 수정 프로그램을 가지고 감사는 다음과 같은 작동합니다;

$("#companiesDDL").change(function() { 
     var postdata = { "symbol": "1099.HK", "status": "A", "mktDate": "10/10/2010", "writeupDate": "10/10/2010" }; 
     $.ajax({ 
      url: '@Url.Action("Writeups", "Writeup")', 
      dataType: "json", 
      data: postdata, 
      success: function (result, status, xhr) { 
       $('#editor).val(xhr.statusText); 
      }, 
      error: function (xhr, status, error) {      
      } 
     }); 

누락 된 부분은 아약스 호출이 완료되면 발신자가 처리 방법을 결정하는 것입니다. 이 경우 ID 로케이터 $('#editor')을 사용하여 jQuery에서 <textarea> 요소를 찾고 그 값을 val()으로 설정합니다.

관련 문제