【发布时间】:2023-03-14 15:45:02
【问题描述】:
根据my previous question 的参考,我在内联JqGrid 中添加了一个下拉选择。我已将下拉列表配置如下
$("#tbl-items").CreateGrid({
url: // MVC controller action url,
colNames: ['Item ID', 'Item Name', 'Gender',....],
colModel: [
{ name: 'ItemID', index: 'ItemID', sorttype: 'integer', hidden: true, key: true },
{name: 'ItemName', index: 'ItemName', sortable: true, autowidth: true, shrinkToFit: true, searchoptions: { sopt: ['cn'] }, editable: true},
{name: 'Gender', index: 'Gender', sortable: true, autowidth: true, shrinkToFit: true, searchoptions: { sopt: ['cn'] }, editable: true,
edittype: "select",
formatter: 'select',
editoptions: {
dataUrl: // Url to get the list of Gender Item from the MVC controller,
buildSelect:
function (response) {
var data = JSON.parse(response)
s = "<select>"; s += '<option value="0">--Select Gender--</option>';
$.each(data, function (i, item) {
s += '<option value="' + item.GenderTypeID + '">' + item.GenderTypeName + '</option>';
})
s += '</select>';
return s;
}
}
},
});
现在我正在尝试将所选值发布到我的视图模型。我的视图模型如下。
public class CreateItemViewModel
{
public int ItemID { get; set; }
public string ItemName { get; set; }
public int GenderTypeId { get; set; }
}
我正在尝试发布我的操作
[HttpPost]
public ActionResult Create(CreateItemViewModel itemModel)
{
// Code
}
但我运气不好,该值没有分配给 GenderTypeId 属性。谁能找出我哪里出错了。
提前致谢
【问题讨论】:
-
你需要给元素一个 name 属性来匹配你的模型属性名称 -
<select name="GenderTypeId"> -
感谢@StephenMuecke 的快速回复。我尝试添加名称属性。但这对我不起作用。
-
你是什么意思它不起作用?没有
name属性的表单控件不会回发其值。 -
是的@StephenMuecke。我明白你的意思了。我尝试在 colModel 中将 name: 'Gender' 重命名为
name: 'GenderTypeId',这使得 -
@Jayaraj.K:网格测试数据和
dataUrl返回的数据的示例会很有帮助。确实需要在colModel中使用name: 'GenderTypeId'。我建议您使用 Fiddler 或 IE/Chrome 的开发者工具(按 F12 后选择网络选项卡)进行 HTTP 跟踪。您刚刚写了“在回发时我将值设为 null”(可能为 0,因为它是int?)。Create方法里面有 0 吗?您在 HTTP POST 中看到的究竟是什么?此外,您应该始终在问题中填写您使用的 jqGrid 的版本和分支。
标签: jquery asp.net-mvc asp.net-mvc-4 jqgrid inline-editing