使用MVC3,如何在用户单击HTML时设置TempData值.ActionLink控制
本文关键字:设置 TempData 控制 ActionLink HTML 单击 MVC3 用户 使用 | 更新日期: 2023-09-27 18:08:53
我有一个foreach循环,它为BusinessList视图中Business对象数组中的每个项目生成一个表行。
这是我的业务对象:
public class Business
{
public long BusinessID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
这是Razor foreach循环:
@foreach (var item in Model)
{
<tr>
<td>
<div class="editor">
<div class="editor-label">
@Html.DisplayFor(modelItem => item.Name)
</div>
</div>
</td>
<td>
<div class="editor">
<div class="editor-label">
@Html.DisplayFor(modelItem => item.Description)
</div>
</div>
</td>
<td>
@Html.ActionLink("Edit", "EditBusiness")
</td>
</tr>
}
我想做的是捕获与用户单击"Edit"按钮所在行的关联的businessessid。businessessid值需要对EditBusiness视图可用。我宁愿不使用查询字符串。是否有一些方法来设置ViewData, TempData,或ViewBag值当用户点击"编辑"链接?
与其将值作为查询字符串传递,不如将编辑链接更改为带有ID隐藏字段和提交按钮(样式类似于编辑链接)的表单
@using (Html.BeginForm("EditBusiness")) {
@Html.HiddenFor(m => m.Id)
<input type="submit" value="Edit" />
}
没有办法在客户端(浏览器)设置ViewData, TempData或ViewBag值,因为它们是ASP的属性。. NET MVC视图对象在服务器端。对于您需要的,您可以像这样使用ActionLink
方法:
@Html.ActionLink("Edit", "EditBusiness", new { Model.BusinessID })
这样,您将调用动作http://<your_host>/Edit/EditBusiness/<BusinessId>
修改您的"EditBusiness"操作方法以接受businessessid参数
public ActionResult EditBusiness(string BusinessID )
并将actionlink更改为this
@Html.ActionLink("Edit", "EditBusiness", new { BusinessID = Model.BusinessID })
首先你应该创建一个这样的Action:
public ActionResult Edit(int id) {
//....
return View();
}
然后,在View(。CSHTML文件)添加以下内容:
@Html.ActionLink("Edit", "Business", new { id = Model.BusinessID })
确保方法参数名称(Edit(int id))与"id = Model "相同。