Я использую проверку на стороне клиента для своих представлений и только что создал ViewModel, который содержит объект организации и объект адреса.
Раньше у меня была ViewModel, которая просто сопоставлялась с сущностью домена. На моем доменном объекте у меня было следующее:
[NotMapped]
[Remote("ValidOrganisation", "Manage", "Organisations", ErrorMessage = "That organisation doesn't exist")]
public string Organisation { get; set; }
Однако теперь я создал ViewModel для представления, которое содержит следующее:
public class PersonModel
{
public Person Person { get; set; }
public AddressModel Address { get; set; }
}
Объект person содержит свойство Organization.
На мой взгляд, у меня есть следующее:
<div>
<label for="Organisation">Organisation</label>
<div class="input large">
@Html.TextBoxFor(m => m.Person.Organisation)
<span class="help-block">Type the first letter of the organisation to search</span>
@Html.ValidationMessageFor(m => m.Person.Organisation)
@Html.Hidden("OrganisationID")
</div>
</div>
Единственное, что изменилось:
@Html.TextBoxFor(m => m.Organisation)
до:
@Html.TextBoxFor(m => m.Person.Organisation)
Мой код удаленной проверки:
public JsonResult ValidOrganisation(string organisation)
{
var exists = orgs.SelectAll().Where(o => o.Name.ToLower() == organisation.ToLower()).Count() > 0;
return Json(exists, JsonRequestBehavior.AllowGet);
}
Проблема в том, что теперь всегда передается значение NULL, которое всегда возвращает false.
Это как-то связано с тем, что свойство Organization теперь меняется на Person.Organisation?