我正在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>
答案 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()
。