2012-04-26 3 views
2
를 사용하여 컨트롤러 문자열 방법에 대한 사전 데이터를 전달

내 jQuery 코드는JQuery와 포스트

$("#btnExec").live('click', function() { 
     var data1= "lorem ipsum"; 
     var data2= "lorem ipsum"; 
     var data3= "lorem ipsum"; 
     var dict = new Object(); 

     $("#ArgsTable tr").each(function (e) { 
       var firstTD = $(this).find("td").eq("0").html().trim().replace(/\s/g, ""); 
       var secondValue = $(this).find("td").eq("1").find("input:text").val(); 
       dict[e] = [firstTD,secondValue]; 
     }); 

     $.ajax({ 
       type: 'POST', 
       cache: false, 
       data: { strdata1: data1, strdata2: data2, strdata3: data3, myDictionary: dict },  
       url: '<%=Url.Action("ExecData","Home") %>', 
       success: function (data) {   
       } 
       }); 
}); 

아래와 같습니다 그리고 내가 btnExec 수단을 클릭하면 내 컨트롤러 방법은,

public string ExecData(string strdata1, string strdata2, string strdata3, Dictionary<object, object> myDictionary) 
{ 
    //do some stuff... 
} 

아래에 주어진다는 컨트롤러 메서드를 문자열 값으로 올바르게 시작했지만 사전 값은 항상 null ..

내 시나리오에서 "컨트롤러 메서드의 반환 유형은 문자열이어야합니다"

어떻게 해결할 수 있습니까? 미리 감사드립니다 !!! 이 같은

답변

4

티르 : 다음

[HttpPost] 
public ActionResult ExecData(
    string strdata1, 
    string strdata2, 
    string strdata3, 
    Dictionary<string, string> myDictionary 
) 
{ 
    return Content("hello world"); 
} 

과 :

var data = { 
    strdata1: 'lorem ipsum', 
    strdata2: 'lorem ipsum', 
    strdata3: 'lorem ipsum' 
}; 

$('#ArgsTable tr').each(function (index, item) { 
    var firstTD = $(this).find('td').eq(0).html().trim().replace(/\s/g, ''); 
    var secondValue = $(this).find('td').eq(1).find('input:text').val(); 
    data['myDictionary[' + index + '].Key'] = firstTD; 
    data['myDictionary[' + index + '].Value'] = secondValue; 
}); 

$.ajax({ 
    url: '<%=Url.Action("ExecData","Home") %>', 
    type: 'POST', 
    traditional: true, 
    data: data, 
    success: function (result) { 

    } 
}); 
+0

안녕 @Darin 디미트로프 .. ** 대 ** ... _It의 작업을 잘 _....'대단히 감사합니다 당신의 빠른 대답'을 위해 .... –

관련 문제