Я не знаю, правильно ли это делать, но я использую Jquery и MVC2.Я использую метод $ .ajax для обратного вызова контроллера для выполнения бизнес-логики над .blur текстового поля.
У меня есть два представления, которые в основном делают то же самое с общими данными, но используют разные модели.Они оба используют один и тот же контроллер.Это может быть проще объяснить с помощью кода:
Итак, вот две модели:
public class RecordModel {
public string RecordID { get; set; }
public string OtherProperties { get; set; }
}
public class SecondaryModel {
public string RecordID { get; set; }
public string OtherPropertiesDifferentThanOtherModel { get; set; }
}
Есть два представления, которые строго типизированы для этих моделей.Один из них - RecordModel, другой - SecondaryModel.
Теперь в этих представлениях есть input = "text", который создается с помощью:
<%= Html.TextBoxFor(model => model.RecordID) %>
Существует jQuery javascript, который связывает метод .blurвызов:
<script>
$('#RecordID').blur(function() {
var data = new Object();
data.RecordID = $('#RecordID').val();
// Any other stuff needed
$.ajax({
url: '/Controller/ValidateRecordID',
type: 'post',
dataType: 'json',
data: data,
success: function(result) {
alert('success: ' + result);
},
error: function(result) {
alert('failed');
}
});
}
</script>
Контроллер выглядит следующим образом:
[HttpPost]
public ActionResult ValidateRecordID(RecordModel model) {
// TODO: Do some verification code here
return this.Json("Validated.");
}
Теперь это работает нормально, если я явно назову RecordModel в контроллере для представления, использующего RecordModel.Тем не менее, представление SecondaryModel также пытается вызвать эту функцию, и происходит сбой, потому что он ожидает RecordModel, а не SecondaryModel.
Так что мой вопрос таков.Как два разных строго типизированных представления могут использовать одно и то же действие в контроллере и при этом придерживаться шаблона моделирования?Я попробовал абстрактные классы и интерфейсы (и изменил страницы представления для использования интерфейса / абстрактного класса), и он все еще не работает.
Любая помощь?И извините за надежность сообщения ...
Спасибо.