是否可以在JsonResult上使用[HttpPost]属性

时间:2012-10-12 07:24:41

标签: asp.net-mvc json asp.net-mvc-3 http post

我在Asp.net中使用MVC 3我需要将HTTP POST日期发送到Control。 控件应该发回一些JSON作为响应。 目前我正在使用此代码,但我无法在collection中获取表单字段。

知道出了什么问题吗?

         [HttpPost]
            public JsonResult LogOn(FormCollection collection, string returnUrl)
            {
    ...
return this.Json(new { success = "true", msg = messages[0] });
    }

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <h1>
        Test LogOn</h1>
    <form action="/Controller/LogOn" method="post">
    UserName:
    <input type="text" name="UserName"><br>
    Password:
    <input type="text" name="Password"><br>
    RememberMe:
    <input type="hidden" name="RememberMe" value="true">
    <input type="submit" value="Submit">
    </form>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

是的,有可能。如果HttpPostAttribute出现问题,您将无法进入LogOn方法。您应该重新检查从客户端发送的字段,并将这些字段放在请求正文中,而不是查询字符串。例如,您可以通过检查网络流量或仅通过调试HttpContext.Current.Request.Form property

来检查Chrome

答案 1 :(得分:0)

是的,你可以。 JsonResult是一个ActionResult,与POST或GET请求没有任何关系 确保使用

包装输入
@using(Html.BeginForm())

or 
<form action="" method="">
</form>

不确定您是如何访问您的字段的.. 你在做FormCollection["form"]吗?它应该是formCollection["Password"]formCollection["UserName"]等。