2017-08-12 54 views
1

我有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()); 
    } 
+0

你能解釋一下嗎? –

+2

它有點不清楚爲什麼你想這樣做,而不是首先在主視圖中填充模型,但它的'@ Html.Action(「GetRoleNameById」,new {roleId = r.RoleId})' –

+1

@ Html.Action(「Controller」,「Name」,new {id = 1}) 這是默認值。使用您自己的控制器和方法更改 –

回答

3

設置內容類型可以使用的Html.Action()接受動作名稱作爲第一個參數的overload和路由值作爲調用服務器方法第二參數

@foreach(var r in user.Roles) 
{ 
    <p>@Html.Action("GetRoleNameById", new { roleId = r.RoleId })</p> 
} 
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!!!"); 
     } 
    }); 
}); 

東西你也可以在調用配置

相關問題