Ответ 1
К сожалению, словарь всегда имел проблему с привязкой модели в MVC. Прочитайте всю историю здесь. Поэтому мы должны создать собственное собственное связующее устройство, чтобы получить словарь в качестве параметра для действия нашего контроллера.
Чтобы решить ваше требование, вот рабочее решение -
Сначала создайте свои ViewModels следующим образом. PersonModel может иметь список RoleModels.
public class PersonModel
{
public List<RoleModel> Roles { get; set; }
public string Name { get; set; }
}
public class RoleModel
{
public string RoleName { get; set;}
public string Description { get; set;}
}
Затем выполните действие индекса, которое будет обслуживать основной индексный указатель -
public ActionResult Index()
{
return View();
}
Индексный просмотр будет иметь следующую операцию JQuery AJAX POST -
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
$(function () {
$('#click1').click(function (e) {
var jsonObject = {
"Name" : "Rami",
"Roles": [{ "RoleName": "Admin", "Description" : "Admin Role"}, { "RoleName": "User", "Description" : "User Role"}]
};
$.ajax({
url: "@Url.Action("AddUser")",
type: "POST",
data: JSON.stringify(jsonObject),
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (response) {
alert(response.responseText);
},
success: function (response) {
alert(response);
}
});
});
});
</script>
<input type="button" value="click1" id="click1" />
Сообщения о действиях индекса в действие AddUser -
[HttpPost]
public ActionResult AddUser(PersonModel model)
{
if (model != null)
{
return Json("Success");
}
else
{
return Json("An Error Has occoured");
}
}
Итак, теперь, когда сообщение происходит, вы можете получить все опубликованные данные в параметре модели действия.