我创建了一个简单的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]方法,谢谢。
答案 0 :(得分:0)
你不能这样做。
MyProducts model
。<强>解决方案:强>
$.ajax({
type: "POST",
datatype: "Json",
url: '/Home/Index",
data: @yourmodel
});
编辑:修改OP视图以获得清晰的说明:
如果您打算使用Html.BeginForm
,则应使用@Html.ActionLink
,而不是<input type="submit" />
。
通过这种方式,它将显示为按钮,而不是链接。
它会将包含Products object
的帖子发送到您的服务器。
如果您打算使用Ajax,则不需要Html.BeginForm
发布。我建议你阅读这篇文章以便清楚地理解:http://www.mikesdotnetting.com/article/220/posting-data-with-jquery-ajax-in-asp-net-razor-web-pages
答案 1 :(得分:0)
@ Html.ActionLink(n.ToString(),&#34; Index&#34;,&#34; Home&#34;,new {id = n})是一个获取请求 你的方法期待id 所以更好的编辑如下:
[HttpGet]
public ActionResult Index(int id)
{
return View();
}