これが正しい方法かどうかはわかりませんが、JqueryとMVC2を使用しています。$ .ajaxメソッドを使用してコントローラーにコールバックし、テキストボックスの.blurでビジネスロジックを実行しています。
共通のデータで基本的に同じことを行う2つのビューがありますが、異なるモデルを使用しています。どちらも同じコントローラーを使用しています。コードで説明する方が簡単かもしれません:
したがって、ここに2つのモデルがあります。
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; }
}
これらのモデルに強く型付けされている2つのビューがあります。1つはRecordModelで、もう1つはSecondaryModelです。
これらのビューには、次の方法で作成されたinput="text"があります。
<%= Html.TextBoxFor(model => model.RecordID) %>
.blurメソッドを呼び出しにバインドするjQueryjavascriptがあります。
<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ビューもこの関数を呼び出そうとしますが、SecondaryModelではなくRecordModelを予期しているため、失敗します。
だから私の質問はこれです。2つの異なる強く型付けされたビューが、コントローラーで同じアクションを使用し、モデリングパターンを順守するにはどうすればよいですか?抽象クラスとインターフェースを試しましたが(そして、インターフェース/抽象クラスを使用するようにビューページを変更しました)、それでも失敗します。
何か助けはありますか?そして、投稿の堅牢性について申し訳ありません...
ありがとう。