我有模特
public class UploadOptionModel
{
public UploadOptionModel()
{
OutputFormat = outputFormatList.Select(i => new SelectListItem
{
Text = i,
Value = i
});
}
public string Email { get; set; }
public IEnumerable<SelectListItem> OutputFormat { get; set; }
}
和查看
@model PC.Models.UploadOptionModel
@using (Html.BeginForm())
{
@Html.TextBoxFor(p => p.Email)
@Html.DropDownList("OutputFormat", Model.OutputFormat)
}
我正在尝试使用Ajax调用提交上面的表单并将其绑定到模型
//Calling ValidateFile Action controller
$.ajax({
url: '@Url.Action("ValidateFile", "Converter")',
data: JSON.stringify({ file: fileName, formData: serializedForm }),
contentType: 'application/json',
type: 'POST',
success: function (response) {
if (response.result) {
} else {
RemoveFile(fileName);
}
}
});
function serializeForm() {
var data = $("form").serializeArray();
var formData = {};
for (var i = 0; i < data.length; i++) {
formData[data[i].name] = data[i].value;
}
return formData;
}
ValidateFile操作
[HttpPost]
public JsonResult ValidateFile(string file, UploadOptionModel formData)
{
}
问题是UploadOptionModel.OutputFormat
没有约束力。我无法读取所选的下拉值。 UploadOptionModel.Email字段已成功绑定。
答案 0 :(得分:1)
您的Model类中应该有另一个属性,您可以在其中绑定下拉列表的选定值。 所以在你的模型中添加类似
的内容public string OutputFormatSelected { get; set; }
然后以这种方式在您的视图中使用它:
@model PC.Models.UploadOptionModel
@using (Html.BeginForm())
{
@Html.TextBoxFor(p => p.Email)
@Html.DropDownListFor( m => m.OutputFormatSelected, m.OutputFormat)
}
您的问题是您将元素列表和结果绑定到同一属性