我有一个小小的问题,并且想知道你有没有可以帮助我?
我使用angularJs将信息传递给MVC控制器。我将用户的ID传递给控制器,以允许管理员将用户更改为管理员。 以下是视图的代码,
<tr ng-repeat="r in students | filter : searchStudent">
<td><input type="text" name="Id" value="{{r.ID}}" readonly id="AdminIdText" /></td>
<td>{{r.username}}</td>
<td>{{r.Email}}</td>
<td>{{r.AccountStatus}}</td>
<td><a href="{{r.ID}}">test</a></td>
<td><input type="submit" value="Make Admin" class="btn btn-warning" /></td>
</tr>
这是控制器,
public ActionResult AdminStatus(int id)
{
int Id = id;
//Connection to the database
var db = WebMatrix.Data.Database.Open("Database");
db.Execute("UPDATE tblaccount SET AccountStatus= 1 WHERE ID =" + id);
db.Close();
return View("AddAdministrator");
}
}
我想知道的是,您如何检索已传递给控制器的数值?这是因为将信息放入模型中无法正常工作。
提前致谢
答案 0 :(得分:2)
我认为你需要做两件事。使<a>
标记看起来像这样:
<a href="Action/{{r.ID}}">
并添加如下控制器方法:
public ActionResult Action(int id)
{
// Do something with the id
}
只要在MVC项目中设置了默认路由映射,就应该将id值映射到id参数。
答案 1 :(得分:1)
使用MVC'UrlHelper'生成即使在移动控制器后也能继续工作的URL:
@Url.Action("<ActionName>", "<ControllerName>", new { Area = "<AreaName>", parameter1 = parameter1Value, parameter2 = parameter2Value })
例如:
@Url.Action("AdminStatus", "Admin", new { Area = "Admin", id = r.ID})
将点击名为“Admin”的区域中的“AdminController”中的“AdminStatus”操作,并发送名为“id”的参数。
答案 2 :(得分:0)
您还可以使用name属性来获取控制器方法的id值。
public void action(int Id)
{
// your code
}