我想使用下拉列表创建列表
我有以下属性的模型类。
public class EditPaymentMethod
{
public List<string> BPay { get; set; }
public List<BillerCode> BillerCodes { get; set; }
}
public class BillerCode
{
public List<string> CodeList { get; set; }
}
在我的模拟课程中,我正在创建模拟数据,如下所示:
public static EditPaymentMethod GetPaymentMethodDetails(int tenantID)
{
for (int i = 0; i < obj.MyProperty.BPay.Count; i++)
{
obj.BillerCodes.Add(new BillerCode { CodeList = new List<string> { "AAA" + i, "BBB" + i } });
}
return obj;
}
在视图中:
@using (Html.BeginForm("EditPaymentMethod","PaymentMethod",FormMethod.Post))
{
@for (int i = 0; i < Model.MyProperty.BPay.Count; i++)
{
<div class="list_scbill">
@Html.Label("Biller Codes")
</div>
<div style="display: block; margin-left: 87px;">
@Html.DropDownListFor(model => model.BillerCodes[i].CodeList, new SelectList(Model.BillerCodes[i].CodeList))
</div>
}
<div id="BtnsDiv">
<button id="btn_SaveChanges" type="submit">
Save
</button>
<button id="btn_Cancel" type="button">
Cancel
</button>
</div>
}
在控制器中:
public ActionResult EditPaymentMethod(EditPaymentMethod model)
{
if (ModelState.IsValid)
{
//CODE TO SAVE DATA THROUGH THE SERVICE
}
return View(model);
}
当我尝试提交表单时,EditPaymentMethod将BillerCodes的模型设为null。
知道我哪里出错了?
提前致谢。
答案 0 :(得分:0)
立即结束一些事情,在路线值字典中,您实际上没有将模型传递给控制器。
@using (Html.BeginForm("EditPaymentMethod","PaymentMethod",new {model = Model}, FormMethod.Post))
会将您的模型作为参数添加到您的帖子中。此外,您的控制器当前是一个获取请求,您需要将其标记为帖子,否则控制器将默认尝试从URL而不是请求体获取序列化字符串。
[HttpPost]
public ActionResult EditPaymentMethod(EditPaymentMethod model)
答案 1 :(得分:0)
使用ListBoxFor
进行多选,而不是DropDownListFor
,这只会产生一个单一选择,其发布值不适合模型绑定器绑定到列表。
答案 2 :(得分:0)
同样,您必须在模型中创建列表变量 在视图页面上你必须
@Html.ListBoxFor(model => model.SelectedList, new SelectList(Model.SelectList, "Id", "Name"), new { @class = "js-example-basic-multiple form-control", @multiple = "multiple", @id = "SelectListId" })
var ListModel = {
"Id": 0,
"SelectedList": $("#SelectedListId").val(),
};
$.ajax({
url: '/Test/Test/',
type: "Post",
async: false,
dataType: "html",
data: JSON.stringify(ListModel),
contentType: "application/json;charset=utf-8",
success: function (result) {
}
});
模型应该是:
public class EditPaymentMethod
{
public List<string> BPay { get; set; }
public List<BillerCode> BillerCodes { get; set; }
public int[] SelectedList{ get; set; }
}