HTTP POST请求无法在ASP.NET MVC 4中工作

时间:2016-02-19 06:01:13

标签: asp.net-mvc asp.net-mvc-4

我创建了一个简单的MVC应用程序并在视图中创建了html表。当我点击此表下的超链接时,它不会转到[HttpPost]方法并进入[HttpGet]默认方法。请查看放在我的mvc应用程序视图部分的表格。

@model   Mvc.Affiliates.Models.Products
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Details</h2>
<div style="height: 200px; width: 500px">
    <h1>This is Content page </h1>

    @using (Html.BeginForm("Index", "Home", FormMethod.Post))
    {
          <table  border="1" style="width:550px;">
          <tr>
                <th><a href="#" data-sortfield="CustomerID">Job Id</a></th>
                <th><a href="#" data-sortfield="CompanyName">Job Name</a></th>
                <th><a href="#" data-sortfield="ContactName">Create Date</a></th>
            </tr>

            @foreach (var item in Model.JobList)
            {
             <tr>
               <td width="50px">@item.JobId</td>
                <td width="200px">@item.JobName</td>
                <td width="200">@item.CreateDate</td>

             </tr>
            }

        </table>
        <br />
        <table border="1" style="width: 550px; ">
          @{ 
             int i = Model.JobList.Count;
             i = i / 10;
             i = i + 1;

              <tr>
               <td width="450">
                @for(int n = 1; n <= i; n++)
                {
                 @Html.ActionLink(n.ToString(), "Index", "Home", new { id = n});
                 @Html.Raw(" ");
            }
               </td>
              </tr>
          }  
        </table>      
    }
</div>

所以我的上述观点@ Html.ActionLink()效果不佳。请任何人帮助我如何强制我的ActionLink进入[HttpPost]方法。

编辑: 我已粘贴上面的完整视图。我实际上是用分页创建gridview,当我点击页码(whcih是一个数字值的ActionLink)时,我需要运行[HttpPost]方法,谢谢。

2 个答案:

答案 0 :(得分:0)

你不能这样做。

  1. 动作链接是GET方法。
  2. 即使您设法将其设为POST方法,现在您的操作链接也不会发布任何内容而不是您想要发布的MyProducts model
  3. <强>解决方案:

    1. 重新考虑您的视图设计
    2. 使用ajax(jquery)发布它。以下是一些片段:
    3. $.ajax({ type: "POST", datatype: "Json", url: '/Home/Index", data: @yourmodel });

      编辑:修改OP视图以获得清晰的说明:

答案 1 :(得分:0)

@ Html.ActionLink(n.ToString(),&#34; Index&#34;,&#34; Home&#34;,new {id = n})是一个获取请求 你的方法期待id 所以更好的编辑如下:

[HttpGet]
public ActionResult Index(int id)
{

    return View();
}