如何在MVC中检索URL值?

时间:2016-02-16 19:41:12

标签: c# angularjs asp.net-mvc

我有一个小小的问题,并且想知道你有没有可以帮助我?

我使用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");
    }
}

我想知道的是,您如何检索已传递给控制器​​的数值?这是因为将信息放入模型中无法正常工作。

提前致谢

3 个答案:

答案 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
}