从文本框发送C代码到服务器

本文关键字:代码 服务器 文本 | 更新日期: 2023-09-27 18:06:54

我使用的是ASP。。NET MVC框架。在我看来,我有一个文本框,其中将包含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();
}

我想知道我是否必须遵循任何特定的编码发送文本框的代码到控制器或不。

从文本框发送C代码到服务器

try this:

     $(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();
     }

这就是FromBody属性的由来…但是使用起来可能有点棘手。

将控制器方法改为read:

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

这将告诉Controller支持代码将请求体解析为code参数。不幸的是,解析不仅仅是一个副本,它要求请求的主体用一个相等的字符=作为前缀。您可以使用AJAX POST实现这一点,如下所示:

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

当您在data选项中使用文本POST时,文本将直接作为请求的正文发送。在开始时添加=可以让控制器正确解析请求体,从开始处剥离=,并将其余部分放入code参数中。

不,这没有意义。