WebGrid ActionLink 如何获取行对象
WebGrid ActionLink how to get row object
我有 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
的正确方法是什么?
您的 ActionLink 正在生成一个名为 id
的路由参数(... new { @id = item.SerialNumber} ..
但您的方法参数名称是 serialNum_
。将方法签名更改为
[HttpGet]
public ActionResult Deactivate(string id)
另请注意,它是一个 link,所以它是一个 GET,而不是一个 POST(虽然不清楚该方法的作用)
我有 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
的正确方法是什么?
您的 ActionLink 正在生成一个名为 id
的路由参数(... new { @id = item.SerialNumber} ..
但您的方法参数名称是 serialNum_
。将方法签名更改为
[HttpGet]
public ActionResult Deactivate(string id)
另请注意,它是一个 link,所以它是一个 GET,而不是一个 POST(虽然不清楚该方法的作用)