1

MVCに移行する古いWebフォームアプリにたくさんのコードがあります。ビューによってHTMLが生成され、AJAX呼び出しによって再生成される必要があるさまざまなページのセクションがあります。このHTMLの多くは非常に複雑であるため、すべてのhtml生成を1つの場所(できればテンプレート)に保持するのに役立ちます。

私の質問は、これに対するより良いアプローチはありますか?部分ビューなどを使用する必要がありますか?それはどのようにWebService呼び出しに変換されますか?私ができるより効率的な何かがありますか?

基本的にこれは私が今していることです(これは本当に基本的でくだらない例なので、お詫びします):

擬似コード

マークアップ

<!--- some html here -->
<div id="myContent">
  <%=StaticMethods.GetContent()%>
</div>
<button id="btnUpdate">Update</button>
<!--- some html here -->

AJAXJavascriptyのもの

$(document).ready(function() {
   $('#btnUpdate').click(function() {
      $.ajax({
         url:'MyService.asmx/MyWebServiceMethod',
         /*crap here*/
         success: function(result, status, code) {
            $('#myContent').html(result);
         }
      });
   });
});

静的メソッド

public static class StaticMethods {
   public static string GetContent() {
      var sb = new StringBuilder();
      var somethings = GetSomeRandomThings(); 
      //just an example. it's normally much more complex.
      foreach(var something in somethings) {
          sb.AppendFormat("<li>{0}</li>",something.Name);
      }
   }
}

MyWebService

public string MyWebServiceMethod() {
    return StaticMethods.GetContent();
}
4

2 に答える 2

2

部分ビューを使用できます。ただし、データを部分ビューに渡す必要があることに注意してください。部分ビューをどこでも使用すると、複雑になる可能性があります。

より独立したものが必要な場合は、MVC Futureの「RenderAction()」を使用して、部分ビューを通常のアクションの呼び出しのように動作させることができます。したがって、「部分ビュー」には、レンダリングされている現在のアクションへの依存関係はありません。

ここで違いを参照してください:http://blogs.intesoft.net/post/2009/02/renderaction-versus-renderpartial-aspnet-mvc.aspx

個人的には、ページの初期レンダリングにRenderAction()を使用します。パネルを更新するためのAJAX呼び出しは、RenderAction呼び出しと同じアクションを指します。

マイク

于 2010-01-05T04:26:50.217 に答える
1

AJAXを介して更新する必要があるコンテンツには、絶対に部分ビューを使用します。それはあなたの人生を1トン楽にします。

WebServiceを呼び出す代わりに、部分ビューからHTMLを返すURLを呼び出すだけです。

要約すると、あなたがしなければならないのは次のことだけです。1.部分的なビューを返すメソッドをコントローラーに用意します。2.AJAX呼び出しのためにそのURLを呼び出します。3.完了!

于 2010-01-05T04:22:09.243 に答える