【问题标题】:Cast Inline JqGrid dropdown value to MVC viewmodel将内联 JqGrid 下拉值转换为 MVC 视图模型
【发布时间】: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 属性来匹配你的模型属性名称 - &lt;select name="GenderTypeId"&gt;
  • 感谢@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


【解决方案1】:

嗯,你的列名应该是 GenderTypeId。

【讨论】:

  • 谢谢@Joe,但是我已经纠正了这个问题,并且我已经通过帖子发表了评论。
  • 老兄,你没听明白,你的列名是性别,这是错误的,应该是 {name: GenderTypeId
猜你喜欢
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
相关资源
最近更新 更多