我有使用Model I构建的WebGrid,使用以下代码构建它:
查看
@model IEnumerable<ExampleMVC4.Models.LicenseInfo>
@{
ViewBag.Title = "Licenses";
WebGrid grid = new WebGrid(Model);
}
<h2>Licenses</h2>
@grid.GetHtml(tableStyle: "table table-striped table-hover",
columns: new[] {
grid.Column("SerialNumber"),
grid.Column("Name"),
grid.Column("Organization"),
grid.Column("Email"),
grid.Column("DateActivated"),
grid.Column(header: "IsValid", format: item=>new HtmlString(Html.ActionLink((string)item.IsValid.ToString(), "Deactivate", new { @id = item.SerialNumber} ).ToString()))
})
<p>@ViewBag.Message</p>
控制
public ActionResult Index()
{
var data = getLicenseInfoList();
return View(data);
}
[HttpPost]
public ActionResult Deactivate(string serialNum_)
{
if (serialNum_ != null)
{
ViewBag.Message = serialNum_;
}
return View();
}
但我无法通过序列号调用Deactivate()
函数。
在ActionLink
内处理WebGrid
点击的正确方法是什么?
答案 0 :(得分:0)
您的ActionLink正在生成名为id
的路由参数(... new { @id = item.SerialNumber} ..
,但您的方法参数名称为serialNum_
。将方法签名更改为
[HttpGet]
public ActionResult Deactivate(string id)
还要注意它的一个链接,所以它是一个GET,而不是一个POST(虽然它不清楚该方法的作用)