1

ASP .Net MVC3で、ユーザーが入力値を入力し、ボタンのクリックを処理してコントローラーを呼び出し、ページ全体を再読み込みせずに他のフォーム入力値をそのプロパティ値で更新する新しいモデルエンティティを返すにはどうすればよいですか?

手順:

  • エンティティのIDを入力します。
  • 「検索」をクリックします
  • 入力された値はコントローラーに送信されます。コントローラーは、指定されたIDを使用してエンティティを返すようにEntityFrameworkにクエリを実行します。
  • 見つかったエンティティは呼び出しページに戻ります。
  • 他のフォーム入力は、一致するプロパティ値で値を更新します。

これはWebフォームでは数秒で完了しますが、MVC3は初めてです...まあ...楽しい:)おそらくAjax.ActionLinkと関係があると思いますか?例私が見るのは、データの送信と保存に関するものです。

リチャード

4

3 に答える 3

3

これは、MVC3 を使用して Ajax 投稿を行う方法です。あなたの場合、OnSuccessサーバーからの応答に基づいてコールバック関数のフォーム フィールドを更新します。

ステップ1

jQuery Ajax ライブラリを参照していることを確認してください

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

ステップ2

ビューで Ajax.BeginForm ヘルパー メソッドを使用して、Ajax 対応のフォームを生成します。OnSuccessJavaScriptコールバック関数も提供

@using(Ajax.BeginForm("Search",new AjaxOptions
{
  HttpMethod = "Post",    
  OnSuccess = "Loaded"    
}))
{
   <input type="text" name="q" />
   <button type="submit" value="Search">Search</button>
}

<script type="text/javascript">
   function Loaded(result) {
      alert('result ' + result.Name);
   }
</script>

ステップ 3

アクション メソッドで、ビジネス処理を実行し、JSON の結果を返します。この例では、クエリを名前に追加するモデルを返しただけです。

[HttpPost]
public ActionResult Search(string q)
{
    return Json(new SampleViewModel { Age = 10 , Name = "John " + q });
}
于 2012-05-10T04:18:06.460 に答える
1

jquery ajax メソッドを使用してアクションを呼び出すだけで、そのアクションで必要な値を返すことができます。その後、返された値を使用して、javascript を介して他のフィールドを更新できます。

 $('#button').click(function(){
    $.ajax({
        url: 'controller/action.aspx',
        success: function(data) {
           $('.result').html(data);
        }
     });
 });

コードを提供しなかったため、具体的に説明するのは難しいため、これは非常に一般的な解決策です。送り返す内容に応じて、データ型を設定したい場合があります。一般的な選択肢は json です。

ここを参照してください: http://api.jquery.com/jQuery.ajax/

于 2012-05-11T01:46:26.567 に答える