【问题标题】:How to pass a parameter from excel post to a controller action如何将参数从 excel post 传递到控制器操作
【发布时间】:2011-12-01 16:21:28
【问题描述】:

如何将已发布的参数传递给控制器​​操作?无法在 URL 中传递它,因为参数很大:这是我用来发布参数的 excel 代码:

Sub PostDataTest()
Dim PostData As String
Dim Comments As String
Dim PostDataURL As Srting

PostDataURL = "http://localhost:11121/InsertData/TestData/"

Comments = Me.Comments.Value

    Set httpReq = New MSXML2.xmlhttp

    httpReq.Open "POST", PostDataURL, False

    httpReq.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

    PostData = "Comments=" & Comments

    httpReq.send PostData
     PostData = ""
    Set httpReq = Nothing

End Sub

这是我的控制器操作:我无法在 URL 中传递“评论”,因为它很长 有没有其他方法可以将此变量传递给下面的控制器操作?

[HttpPost]
public ActionResult TestData(string Comments)
{
    TestData.Comments = Comments;
    DataContext.InsertTestData(TestData);      
}

【问题讨论】:

  • 那么,这行不通?它怎么行不通? POSTing 不会将参数放在 URL 中,而是将数据隐藏在请求中。
  • @Cory 如何在控制器操作中检索该数据?在这种情况下,“评论”

标签: c# asp.net-mvc excel http-post vba


【解决方案1】:

您的 POST 数据应采用“key = value”格式。

你在哪里

PostData = Comments

应该是

PostData = "Comments=" & Comments

否则,控制器操作请求中的 POST 数据可能为空,或者 MVC 可能无法自动将该值绑定到您的操作方法中的 Comments 参数。

请参阅以下帖子以供参考:

如果绑定到Comments 不起作用,您可以尝试通过将操作定义更改为:

[HttpPost]
public ActionResult TestData(FormCollection form)
{
    TestData.Comments = form["Comments"];
    DataContext.InsertTestData(TestData);      
}

【讨论】:

  • 我如何从控制器操作中的“评论”中检索值?
  • @user793468:我不确定您在问什么:该值已经绑定到您操作中的 Comments 字符串参数;即,您的操作方法将完全按照您在帖子中使用的方式。
  • 无法在 URL 中传递“评论”,因为 cmets 字符串非常庞大。我在上面的代码中如何使用它是通过 URL 将“评论”作为参数传递。
  • @user793468:参数仅在 GET 请求的 URL 中传递。您的代码使用 POST 请求,该请求将 Comments 嵌入到请求标头中,可以是您想要的任何大小。
  • 好的,我尝试了上述方法,我得到一个“字符串引用未设置为字符串的实例”错误,我进行了调试,并且“评论”在我的控制器操作中为空。我在上面更新了我的控制器操作。
猜你喜欢
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 2016-07-30
  • 1970-01-01
相关资源
最近更新 更多