我有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());
}
答案 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!!!");
}
});
});
您也可以在呼叫配置中设置内容类型