我的网络应用程序存在问题。 Project是在MVC 4中创建的。几天前我将操作系统更新到Windows 10.之后在我使用ajax表单的所有视图中,它将模型发布为null,因此我在控制器中得到了NullReferenceException。在更新之前一切都很完美。使用经典表单的标准发布操作正常工作。通过jQuery使用的ajax请求也可以。我完全陷入困境。
有人知道如何解决它吗?
修改
我为测试创建了空的mvc应用程序并准备了简单的ajax表单并且它可以工作..仍然不知道下面给出的例子是什么原因。 为布局视图(jquery,ajax等)提供了所有需要的脚本。
以下只是整个视图的一个组成部分。在这里张贴它太大了。 它工作得很完美,在我更新了Windows后它停止工作(也许我做了其他事情,但我之前无法恢复状态)。
模型
public class UniversityModel
{
public UniversityDto UniversityDto { get; set; }
public IList<UniversityDto> UniversityDtos { get; set; }
public UniversityModel()
{
UniversityDtos = new List<UniversityDto>();
}
}
public class UniversityDto
{
public long Id { get; set; }
[Required]
public string ShortName { get; set; }
[Required]
public string LongName { get; set; }
}
控制器:
[HttpPost]
public PartialViewResult AddUniversity([Bind(Prefix = "UniversityDto")]UniversityDto model)
{
UniversityModel universityModel = new UniversityModel();
using (ISession session = (ISession)_unitOfWork.GetBaseSession())
{
using (Infrastructure.Data.Interfaces.ITransaction transaction = _unitOfWork.BeginTransaction())
{
if (ModelState.IsValid)
{
model.ShortName = model.ShortName.Trim();
model.LongName = model.LongName.Trim();
var entity = Mapper.Map<University>(model);
session.Save(entity);
transaction.Commit();
universityModel = CompleteUniversityModel(session);
return PartialView("UniversityPartial", universityModel);
}
else
{
universityModel = CompleteUniversityModel(session, model);
return PartialView("UniversityPartial", universityModel);
}
}
}
}
查看(我省略了脚本部分和主视图)
@model ThesisNavigator.Presentation.WebFrontend.Models.StructureController.UniversityModel
@using (Ajax.BeginForm("AddUniversity", "Structure", new AjaxOptions()
{
HttpMethod = "POST",
UpdateTargetId = "UniversityPartialContainer",
LoadingElementId = "loadingUniversity",
OnBegin = "onBeginAddUniversity",
OnSuccess = "onSuccessAddUniversity",
OnFailure = "onFailureAddUniversity"
},
new { @class = "form-inline", @id = "formAddUniversity" }))
{
<div class="form-group">
@Html.LabelFor(m => m.UniversityDto.ShortName)
@Html.TextBoxFor(m => m.UniversityDto.ShortName, new { @class = "form-control" })
</div>
<div class="form-group">
@Html.LabelFor(m => m.UniversityDto.LongName)
@Html.TextBoxFor(m => m.UniversityDto.LongName, new { @class = "form-control" })
</div>
<button type="submit" class="btn btn-default">Dodaj</button>
<div class="center">
@Html.ValidationSummary("", new { @id = "formAddUniversityValidationSummary", @class = "center", @style = "display:none" })
</div>
}
<div id="universityList">
@{ Html.RenderPartial("UniversityListPartial", Model.UniversityDtos); }
</div>