2016-07-20 51 views
0

我正在ASP.NET MVC中創建一個應用程序,該應用程序允許您發佈包含兩個文本字段和獨佔選擇字符串集的表單。這意味着顯示給用戶的字符串列表,當被選擇(一次只能選擇一個)並提交時(該字段是必需的),選擇的文本將被傳遞給控制器​​。我試過在bootstrap中使用列表組,然後爲onclick添加一個JQuery事件,並設置隱藏表單字段的值。點擊處理程序工作正常,但值設置有問題。這裏是我的代碼:將獨佔選擇傳遞給ASP.NET表單

<div class="col-xs-3"> 
      <div class="list-group" style="overflow-y: auto; height: 300px; width: 100%;"> 
       @Html.ActionLink("Create new occupation", "createOccupation", "Occupation", null, new { @class = "list-group-item" }) 
       @foreach (var occ in Get.AllOccupations().ToList()) 
       { 
        <a href="#" class="list-group-item">@occ.Title</a> 
       } 

      </div> 
     </div> 

<script> 
    $('.list-group-item').on('click', function() { 
     $('.list-group a.active').removeClass('active'); 
     $('#OccupancySelectBox').val($(this).find("a").first().text()); 
     $(this).addClass('active'); 
    }) 
</script> 
+0

一個簡單的下拉列表呢? – ADyson

+0

還是單選按鈕組? –

+0

我想問的是,如何在沒有此JQuery垃圾的情況下將這些值傳遞給控制器​​? – RhysO

回答

0

我試圖問的是,我如何將值傳遞給 控制器沒有這個JQuery的垃圾?

當然。如果你喜歡這種方式,你可以使用沒有jQuery/ajax的普通表單發佈。

假設你有一個像這樣

public class JobSelectionVm 
{ 
    public string FirstName {set;get;} 
    public string LastName { set;get;} 
    public int SelectedJobId {set;get; 
} 

現在你的觀點會被強類型到這個視圖模型

@model JobSelectionVm 
@using(Html.BeginForm()) 
{ 
    <label>First Name</label> 
    @Html.TextBoxFor(s=>s.FirstName) 

    <label>Last Name</label> 
    @Html.TextBoxFor(s=>s.LastName) 

    <label>Select an Occupation</label> 
    var jobList = Get.AllOccupations().ToList(); 
    foreach (var occ in jobList) 
    { 
     @Html.RadioButtonFor(f => Model.SelectedJobId, ev.JobId) 
     <div>@ev.Title</div> 
    } 
    <input type="submit" /> 
} 

,這將產生對作業表集合中的項目radion按鈕的視圖模型。提交表格時,所選作業的ID將以SelectedJobId屬性值提供。

[HttpPost] 
public ActionResult Create(JobSelectionVm model) 
{ 
    // check model.FirstName,model.LastName, model.SelectedJobId 
    // to do : return something 
} 

另外,還可以更新視圖模型具有帶有用於單選按鈕數據的屬性(Get.AllOccupations()),這樣就可以避免在剃刀視圖主叫Get.AllOccupations()