全,
当通过AJAX向我的控制器(/Contact/Process)提交表单值时,模型总是为null,而ModelState.IsValid总是为false。不知道为什么模型是空的。AJAX帖子正在工作,并且存在水化参数。
谢谢
FireBug
参数
Contact.Email xxx@example.com
Contact.FirstName约翰
Contact.LastName Doe
Contact.Message嗨在那儿
X请求-使用XMLHttpRequest
接触提交
视图模型
namespace GuitarCollector.Models.ViewModels
{
public class ContactViewModel
{
public Contact Contact { get; set; }
}
}
模型
namespace GuitarCollector.Models
{
public class Contact
{
//Primary Key
public int Id { get; set; }
[Display(Name = "First name")]
[Required(ErrorMessage = "Please enter your first name")]
public string FirstName { get; set; }
[Display(Name = "Last name")]
[Required(ErrorMessage = "Please enter your last name")]
public string LastName { get; set; }
[Display(Name = "Email address")]
[Required(ErrorMessage = "Please enter your email address")]
public string Email { get; set; }
[Display(Name = "Message")]
[Required(ErrorMessage = "Please enter your message")]
public string Message { get; set; }
public DateTime DateCreated { get; set; }
}
}
表单
<div id="content">
<div id="Status"></div>
@using (Ajax.BeginForm("Process","Contact", new AjaxOptions{ HttpMethod = "POST", UpdateTargetId = "Status"}))
{
@Html.ValidationSummary(true)
<p><span class="required">* All fields are required.</span></p>
<!-- First Name -->
<div>
@Html.LabelFor(model => model.Contact.FirstName) <span class="required">*</span>
</div>
@Html.EditorFor(model => model.Contact.FirstName)
@Html.ValidationMessageFor(model =>model.Contact.FirstName)
<!-- Last Name -->
<div>
@Html.LabelFor(model => model.Contact.LastName) <span class="required">*</span>
</div>
@Html.EditorFor(model => model.Contact.LastName)
@Html.ValidationMessageFor(model =>model.Contact.LastName)
<!-- Email -->
<div>
@Html.LabelFor(model => model.Contact.Email) <span class="required">*</span>
</div>
@Html.EditorFor(model => model.Contact.Email)
@Html.ValidationMessageFor(model =>model.Contact.Email)
<!-- Message -->
<div>
@Html.LabelFor(model => model.Contact.Message) <span class="required">*</span>
</div>
@Html.TextAreaFor(model => model.Contact.Message)
@Html.ValidationMessageFor(model =>model.Contact.Message)
<div>
<input type="submit" name="contact" id="contact" value="Submit" class="btn"/>
</div>
}
</div>
控制器
[HttpPost]
public ActionResult Process(ContactViewModel model)
{
if (ModelState.IsValid)
{
model.Contact.DateCreated = DateTime.Now;
db.Contacts.Add(model.Contact);
db.SaveChanges();
return Content("Success!");
}
return Content("Failure");
}
发布于 2013-12-18 18:12:26
您必须为视图模型的属性名以外的submit
输入提供其他名称,或者完全删除它。我觉得你其实不需要它。在这种情况下,它不会被序列化并传递给控制器。
由于模型绑定程序不能将值“提交”绑定到Contact
属性,所以模型将以null的形式出现。
发布于 2013-12-18 17:43:42
你忘了:
@Html.HiddenFor(model => model.Contact.Id )
@Html.HiddenFor(model => model.Contact.DateCreated)
而且asp.net mvc不能进行绑定
https://stackoverflow.com/questions/20664831
复制相似问题