【问题标题】:C# .Net reading a string input from a form postC# .Net 从表单帖子中读取字符串输入
【发布时间】:2012-03-07 22:21:44
【问题描述】:

我是 C#.net 的新手。我在客户端做一个表单发布,将 csv 发布到我的控制器

在我的控制器中,我无法读取该值。我的目标是最终创建一个 csv 文件,因此我避免使用 ajax 帖子。我的表单上有指向正确 URL 的操作,并且我将输入附加到表单中。

我的客户端有这样的东西

    WatchList_Class.prototype.Downloads1 = function(csv) {
 var input = '<input type= "text" id="uploadCsv" name="uploadCsv" value=""' +        csv + ' />';
     $('form#uploadCSV').append(input);
     $('form#uploadCSV').submit();
    };

在控制器端我有

   public ActionResult ExportCSVFile(string data) //Im getting data as null
{
  string toReturn = Server.UrlDecode(data);
  return File(System.Text.Encoding.UTF8.GetBytes(toReturn), "text/csv", "exportedData.csv");

}  

我将字符串数据设为空;

谁能指出我做错了什么。提前致谢

【问题讨论】:

  • 好吧,data 的非空性将完全取决于您在客户端某处有一个名称为 data 的表单元素。您提供的代码中没有任何内容表明您拥有这样的元素。

标签: c# javascript jquery .net asp.net-mvc


【解决方案1】:

试试这个动作方法:

[HttpPost]
public ActionResult ExportCSVFile(HttpPostedFileBase uploadCsv)
{
    uploadCsv.SaveAs("exportedData.csv");
}

(另请注意,在您的代码中,参数名称data 与输入控件名称uploadCsv 不匹配)

【讨论】:

  • 我在同一行有一个简短的问题,如果从表单帖子中读取字符串,控制器代码会是什么样子,说字符串包含密码。提前致谢
  • 不管是密码,还是服务器端的字符串。所以只需使用... MyAction(string password) { ... }
【解决方案2】:

您的参数必须与 POST 变量的名称匹配。因此,不要使用数据,而是使用 uploadCsv:

[HttpPost]
public ActionResult ExportCSVFile(string uploadCsv) 
{
  string toReturn = Server.UrlDecode(data);
  return File(System.Text.Encoding.UTF8.GetBytes(toReturn), "text/csv", "exportedData.csv");
}

【讨论】:

    【解决方案3】:

    你是否在上传表单上设置了编码类型?

    enctype="multipart/form-data"
    

    【讨论】:

      【解决方案4】:

      最可能的原因是您的数据 ID 与您的 ExportCSVFile 处理程序中的参数名称不匹配。使用 Fiddler 检查实际发布到您的页面的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-26
        相关资源
        最近更新 更多