3

Umbraco 5(jupiter)にAJaxを実装しようとしています。通常のポストバックでうまく機能する、Surfaceコントローラーを作成しようとしましたが、Mvc Ajaxコントロール(Ajax.BeginFormなど)を使用する機能がありません。これで、アプリケーションに新しいMVCエリアが追加されました。Ajaxフォームを介してポストバックをコントローラーのアクションに簡単に送信できますが、CurrentUmbracoPageにアクセスできないため(Surfaceコントローラーではないため)、このアクションから何を返す必要がありますか? 、私のコードはかなり単純です、

@using (Ajax.BeginForm("HandleFollowsUs", "propertyDetails", new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "POST", LoadingElementId = "ajax-loader", UpdateTargetId = "fuError" }))
{
 <input type="image" style="border-width: 0px;" src="/images/btnSubmitN.jpg"  id="btn_submitEmail" /></span>

}
AND my ACTION is 
 [HttpPost]
    public ActionResult HandleFollowsUs(FormCollection collection) {
//Do Something
Return View();//////This is where i am confused.
}

ビューを返すと、それは新しい領域にありません。部分的なビューはページのほんの一部しか返しません。:/助けていただければ幸いです、ありがとう、シャー

4

2 に答える 2

2

代わりにJqueryAjaxを使用して文字列を返します。これは、Umbraco5の通常のルーティングには影響しません。サンプルコードは次のとおりです。

function loadList(){
$.ajax({
    type: "POST",
    url: "/en/propertydetails/searchListView",
    data: "loc=" + loc + "&startDate=" + startDate + "&endDate=" + endDate + "&bedrooms=" + bedrooms + "&adults=" + adults + "&children=" + children + "&offerCode=" + offerCode,
    error: function (xhr, status, error) {
        //alert('error');
    },
    success: function (response) {
        //do something with response
        populateSearchList(response);
    }
});

}

そして私の行動は

[HttpPost]
    public string searchListView(string loc, string endDate, string startDate, string bedrooms, string adults, string children, string offerCode)
    {
//Do Something
}
于 2012-05-30T07:31:14.297 に答える
1

もちろん、HandleFollowUsがリダイレクトを実行できるように、現在のURLを非表示のフォームファイルとして送信することもできます。

しかし、私が正しく理解していれば、クライアント側の検証を行いたいだけですか?MVCフレームワークにすでに存在する目立たない検証フレームワークの使用を検討してください。詳細については、この投稿をご覧ください:ASP.NET MVC 3-Ajax.BeginForm vs jQuery Form Plugin

于 2012-04-07T07:18:49.593 に答える