2014-06-06 81 views
-3

我正在使用ASP.NET MVC框架。 在我看來,我有一個包含C代碼的文本框。我想將這些代碼發送給控制器。我的視圖代碼如下:發送C代碼從文本框到服務器

<textarea class="form-control" rows="8" style="margin-top: 5px;" id="code"> 

</textarea> 

$.ajax({ 
     url: "/Contest/SubmitContestProblem", 
     type: "POST", 
     data: { code: $("#code").val() } 
     }) 
     .done(function (data) { 

     }) 
     .fail(function() { 

     }) 
     .always(function() { 

     }); 

我的控制器代碼看起來像

[HttpPost] 
public JsonResult SubmitContestProblem(string code) 
{ 
    return View(); 
} 

我想知道我是否必須遵循任何特定的編碼發送文本框的代碼控制器或不。

+2

當你嘗試時發生了什麼? –

+0

我沒有使用任何編碼。當我進行ajax調用時,它給了我以下錯誤: 「POST http:// localhost:60946/Contest/SubmitContestProblem 500(Internal Server Error)」 –

+1

And ...?嘗試記錄您的錯誤(http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/logging-error-details-with-elmah-cs)和/或觀看服務器的在做(http://getglimpse.com/)。 –

回答

0

試試這個:

 $(document).ready(function() { 
     $("#button").click(function() { 
     var code = $('#code').val(); 
     $.getJSON("/Contest/SubmitContestProblem", { id: code}, function (myData) { 

     })) 
     $.each(myData, function (index, itemData) { 

     })); 
     }); 

    public JsonResult SubmitContestProblem(string code) 
    { 
     return View(); 
    } 
+1

你能解釋一下你做了什麼以及它如何回答OP的問題嗎? – rhughes

0

這就是FromBody屬性進來......但它可以是一個有點棘手使用。

更改控制器的方法如下:

public JsonResult SubmitContestProblem([FromBody]string code) 
{ 
    return View(); 
} 

這將告訴Controller支持代碼的請求的主體解析到code參數。不幸的是,解析不只是一個副本,它要求請求的主體前綴爲等號=。你可以利用AJAX POST像這樣實現這一點:

$.ajax({ 
    url: "/Contest/SubmitContestProblem", 
    type: "POST", 
    data: "=" + $("#code").val() 
}) 

當你POST與在data選項文本的文本直接發送的請求的主體。在開始時添加=可使控制器正確解析請求主體,從開始處剝離=,並將其餘部分放入code參數中。

不,沒有意義。這只是它的方式。

相關問題