2016-02-29 82 views
0

我有以下部分視圖,其中列出了表中的用戶。每一行都有一個註冊按鈕,它將用戶註冊到所選課程。使用不同按鈕的相同部分視圖

我需要幾乎相同的觀點來完成另一項任務。但是,我需要將用戶添加到討論中(而不是將其註冊到課程中)。我知道我可以創建另一個視圖並將「註冊」按鈕更改爲「添加」按鈕。

但是,我不知道是否有更有效的方法來做到這一點。我的方法似乎不容易維護。

@model IEnumerable<ApplicationUser> 
<h4>Search results:</h4> 
<table class="table-condensed" style="font-size:smaller"> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td> 
       @Html.DisplayFor(modelItem => item.FirstName) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.LastName) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.Email) 
      </td> 
      <td> 
       <input class="btn_Enroll" data-userid="@item.Id" value="Enroll" type="button" /> 
      </td> 
     </tr> 
    } 

</table> 

<script> 
    $(".btn_Enroll").click(function() { 
     //code for enrolling 
     var course_id = $("#hdn_SelectedCourseId").val(); 
    }) 
</script> 

回答

0

一種方式來做到這一點是通過設置調用操作方法的一個屬性,它會使這個觀點

<table class="table-condensed" style="font-size:smaller" data-module="@ViewData["module"]"></table> 

,然後在您的JS代碼中使用它

<script> 
$(".btn_Enroll").click(function() { 
    //code for enrolling 
    var course_id = $("#hdn_SelectedCourseId").val(); 
    var moduleType = $(this).closest("table").attr("data-module"); 
    if (moduleType === "enroll") 
    { 
     //Do enrollment 
    } 
    else if (moduleType === "discussion") 
    { 
     //discuss here 
    } 


}) 

例如,在主頁上您有鏈接,如

@Html.ActionLink("enrollment", "Index", new { module = "enroll" }) 
    @Html.ActionLink("Discussion", "Index", new { module = "discussion" }) 

和你ApplicationUserController具有指標作用這樣

public ActionResult Index(string module) 
{ 
    ViewData["module"] = module; 

    return View(); 
} 

但是,如果項目或要求的範圍內可以註冊和/或討論修改,然後更好地保持,然後分開,以避免代碼在單頁的複雜性以及單個JS代碼。

+0

感謝您的回答。 @ViewData [「module」]來自哪裏?你能否詳細說明你的答案? – renakre

+0

爲了更好的可讀性更新了答案 – Nasir

相關問題