使用MVC,我有一个文本框和无序列表:
<div class="form-group">
@Html.Label("Assets:", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.Editor("Assets", new { htmlAttributes = new { id = "Asset-Tags", @class = "form-control" } })
</div>
</div>
<div class="form-group">
<div class="col-md-2"></div>
<div class="col-md-3">
<ul name="AssetsList" id="asset-list" class="list-group"></ul>
</div>
</div>
此文本框使用Twitter Typeahead帮助用户只从我的一个数据库表中选择他们正在键入的选项..然后,一旦用户选择该选项,则该选项将填充到{{1元素允许用户在提交之前查看他们所选择的内容。
ul
在我的控制器中,我有这个:
<script>
$(document).ready(function () {
var assets = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('assetTag'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/api/ItemsApi?query=%QUERY',
wildcard: '%QUERY'
}
});
$('#Asset-Tags').typeahead({
minLength: 3,
highlight: true,
},
{
name: 'assets',
display: 'assetTag',
source: assets,
limit: 20
}).on("typeahead:select", function (e, asset) {
$("#asset-list").append("<li class='list-group-item' value='" + asset.id + "'>" + asset.assetTag + "</li>");
$("#Asset-Tags").typeahead("val", "");
});
});
</script>
当我提交时,[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,Phone,DateIssued,Comment,Deleted,StatusId")] BorrowedProperty borrowedProperty, List<string> AssetsList)
为空,这是我在尝试提交无序列表时所期望的..所以我的问题是..如何获取用户选择提交给{的项目列表{1}}方法以及表格的其余部分?
更新
我尝试过将名称属性添加到列表项中,如下所示:
AssetsList
仍未提交给服务器。
答案 0 :(得分:0)
将项目添加到AssetsList时,您必须为每个项目编制索引。
所以,这一行
$(“#asset-list”)。append(“”+ asset.assetTag +“”);
应该有一个带有索引的name属性。
因此item [0]应该具有name = AssetsList [0]的属性 item [1]应该有一个name = AssetsList [1]
的属性这应该将值绑定为服务器上的列表。
答案 1 :(得分:0)
使用fiddler女巫帮助您观看请求和提交的响应
http://www.telerik.com/blogs/capturing-traffic-from-.net-services-with-fiddler