客户
public class ClientModelData
{
public int ClientID { get; set; }
public string ClientName { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
public IList<int> LocationID { get; set; }
}
控制器
[HttpPost]
public ActionResult AddClient(ClientModelData client)
{
Client _client = new Client()
{
//ClientCode=client.ClientCode,
ClientName = client.ClientName,
Phone = client.Phone,
Ext = client.Ext,
Address = client.Address,
CreatedBy = 1,
CreatedDate = DateTime.Now,
ModifiedBy = 1,
ModifiedDate = DateTime.Now,
ModifiedIP = Request.ServerVariables["REMOTE_ADDR"]
};
db.Clients.Add(_client);
try
{
db.SaveChanges();
}
catch (DbEntityValidationException dbEx)
{
string error = string.Empty;
foreach (var validationErrors in dbEx.EntityValidationErrors)
foreach (var validationError in validationErrors.ValidationErrors)
error += string.Format("Property: {0} Error: {1}", validationError.PropertyName,
validationError.ErrorMessage);
return Json(new
{
status = false,
message = "Unable to update information for selected client, please contact administrator. For detail <a class='errordetail'>click here</a>",
exception = error
});
}
return Json(_client);
}
我有一个复选框列表:
<ul class="locations">
@foreach (var item in Model.Locations)
{
<li>
<label>
<input type="checkbox" id="chkLocations" name="chkLocations"
value="@item.LocationID" />
@item.LocationTitle</label>
</li>
}
</ul>
** Json对象包含值:**
var allVals = [];
$('#chkLocations:checked').each(function () {
allVals.push($(this).val());
});
var dataPacket = {
ClientName: $("#txtClientName").val(),
Phone: $("#txtPhone").val(),
Ext: $("#txtExt").val(),
Address: $("#txtAddress").val(),
LocationID: allVals
};
现在出现问题,当我给复选框:选中项目时,它不会填充ModelData实体位置属性
图像:
问题出现POSTING表单... JQuery AJAX
图像:
答案 0 :(得分:0)
不幸的是,您还没有告诉我们您是如何调用控制器操作的。您可以尝试将它们作为JSON请求发送,这允许您将任意复杂的对象发送到控制器操作:
var allVals = [];
$('#chkLocations:checked').each(function () {
allVals.push($(this).val());
});
var dataPacket = {
ClientName: $("#txtClientName").val(),
Phone: $("#txtPhone").val(),
Ext: $("#txtExt").val(),
Address: $("#txtAddress").val(),
LocationID: allVals
};
然后:
$.ajax({
url: '@Url.Action("AddClient", "SomeController")',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify({ client: dataPacket }),
success: function(result) {
// ... handle the result
}
});
请注意JSON.stringify
方法的用法,该方法本身构建在现代浏览器中,以将请求作为JSON字符串发送。我们还将请求内容类型标头设置为application/json
,以便应用程序使用正确的JSON值提供程序并将此请求解析为模型。