AsP.Net MVC 5如何在视图中调用函数

时间:2017-08-12 06:26:22

标签: c# asp.net asp.net-mvc asp.net-mvc-5

我有ASP.Net MVC 5应用程序我想从视图中调用一个方法我该怎么办?

我的代码:

我的UsersList功能:

    public ActionResult UsersList()
    {

        var User_VM = new UserVM
        {
            MyUsers = context.Users.OrderBy(u => u.Email).Include(u => u.Roles).ToList()
        };

        return View(User_VM);

    }

UsersList查看:

@foreach(var user in Model.MyUsers)
{
    <tr>
        <td>@user.Email</td>
        <td>
            @foreach(var r in user.Roles)
            {
                <p>
                    @Html.Action(GetRoleNameById(r.RoleId))
                </p>
            }
        </td>
    </tr>
}

和我在控制器中的功能:

   public ActionResult GetRoleNameById(string RoleId)
    {
        var RoleName = context.Roles.Where(r => r.Id == RoleId).FirstOrDefault();
        return Content(RoleName.ToString());
    }

2 个答案:

答案 0 :(得分:4)

您可以使用Html.Action()的{​​{3}}来调用您的服务器方法,该@foreach(var r in user.Roles) { <p>@Html.Action("GetRoleNameById", new { roleId = r.RoleId })</p> } 接受操作名称作为第一个参数,路由值作为第二个参数

renderer

答案 1 :(得分:0)

你可以通过多种方式达到这个目的,你可以调用对控制器方法进行ajax调用。像这样的东西

$('#btnSave').click(function () {    
    $.ajax({
        url: "/ContollerName/GetRoleNameById" + "?RoleId=1", // change controller name here and pass proper role id.
        type: "GET",
        success: function (data) {
            if (data.status == "Success") {
                alert("Done");
            } else {
                alert("Error occurs on the Database level!");
            }
        },
        error: function () {
            alert("An error has occured!!!");
        }
    });
});

您也可以在呼叫配置中设置内容类型