【问题标题】:Send C code from textbox to server将 C 代码从文本框发送到服务器
【发布时间】:2014-06-06 04:44:03
【问题描述】:

我正在使用 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# jquery asp.net-mvc


【解决方案1】:

试试这个:

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

【讨论】:

  • 你能解释一下你做了什么以及它如何回答OP的问题吗?
【解决方案2】:

这就是 FromBody 属性的用武之地...但使用起来可能有点棘手。

将您的控制器方法更改为:

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

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

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

当您在data 选项中使用POST 文本时,文本将直接作为请求正文发送。在开头添加 = 可以让 Controller 正确解析请求正文,从开头删除 = 并将其余部分放入您的 code 参数中。

不,这没有意义。就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多