В проекте Asp. NET MVC на моей странице cs html есть форма. Я хочу отправить значения формы на контроллер с пост-адаптером jquery. Я использую функцию .serilize () для получения значений формы, и когда я предупреждаю сериализованные значения, я могу получить их в виде строки, однако, когда я отправляю их в контроллер, они отправляют как нулевые. Вот моя страница cs html:
EditPage.cs html
@model Models.PROJECTS
@using (Html.BeginForm(null,null,FormMethod.Post,new {id="EditForm"}))
{
@*Html.AntiForgeryToken()*@
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.PROJE_NO)
<div class="form-group">
@Html.LabelFor(model => model.PROJECTNAME, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.PROJECTNAME, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.PROJECTNAME, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.PROJECTCODE, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.PROJECTCODE, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.PROJECTCODE, "", new { @class = "text-danger" })
</div>
</div>
.
.
.
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<i class="fa fa-save fa-lg" id="saveBtn" style="cursor:pointer;color:green" title="Edit Project"></i>
</div>
</div>
</div>
}
@section scripts
{
<script language="javascript">
$(document).ready(function() {
$(document).on("click", "#saveBtn", function () {
var formData = $('#EditForm').serialize();
alert(JSON.stringify(formData));
$.post('@Url.Action("EditProject", "Home")',
{
project: JSON.stringify(formData)
}).done(function(data) {
if (data.success) {
alertify.success(data.message);
} else {
alertify.error(data.message);
}
}).fail(function() {
alertify.error('Error while editing project');
});
});
});
</script>
Вот HomeController:
[HttpPost]
public ActionResult EditProject(PROJECTS project)
{
try
{
using (dbContext = new ProjectsDbContext())
{
dbContext.Entry(project).State = EntityState.Modified;
dbContext.SaveChanges();
return Json(new { success = true, message = "Project Info is Updated" });
}
}
catch (Exception e)
{
return Json(new { success = false, message = "Project Info Cannot be Updated" });
}
}
Для действия EditProject Параметр проекта имеет значение NULL. Я не знаю, где я делаю неправильно. Любая помощь приветствуется.