将独占选择传递给ASP.NET表单

时间:2016-07-20 13:17:44

标签: javascript c# jquery asp.net asp.net-mvc

我正在ASP.NET MVC中创建一个应用程序,允许您发布一个包含两个文本字段和一个独占选择字符串集的表单。这意味着向用户显示的字符串列表,当选择(一次只能选择一个)并提交(需要此字段)时,选择中的文本将传递给控制器​​。我尝试在bootstrap中使用列表组,然后为onclick添加一个JQuery事件,并设置隐藏表单字段的值。单击处理程序工作正常,但值设置有问题。这是我的代码:

<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>

1 个答案:

答案 0 :(得分: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" />
}

这将为jobList集合中的项生成radion按钮。提交表单时,所选作业的ID将在SelectedJobId属性值中提供。

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

此外,您可以更新视图模型,使其具有一个包含单选按钮数据的属性(Get.AllOccupations()),这样您就可以避免在剃刀视图中调用Get.AllOccupations()