3

我正在尝试在 Umbraco 5(jupiter)上实现 AJax,我尝试创建 Surface 控制器,它在正常回发时效果很好,但它不提供使用 Mvc Ajax 控件的设施,即 Ajax.BeginForm 等......,我现在已经在应用程序中添加了一个新的 MVC 区域,我可以通过 Ajax 表单轻松地将 Post Back 发送到控制器的操作,但是我应该从这个操作返回什么,因为 CurrentUmbracoPage 不可访问(因为它不是表面控制器) ,我的代码相当简单,

@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.
}

如果我返回视图,它不在新区域,部分视图只会返回页面的一小部分,:/ 任何帮助将不胜感激,谢谢,Sher

4

2 回答 2

2

改用 Jquery Ajax 并返回一个字符串,它不会影响 Umbraco 5 的正常路由。示例代码如下

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

当然,您可以将当前 URL 作为隐藏的表单文件发送,以便 HandleFollowUs 可以进行重定向。

但是,如果我理解正确,您只想进行一些客户端验证?考虑使用 MVC 框架中已经存在的不显眼的验证框架。查看这篇文章了解更多信息:ASP.NET MVC 3 - Ajax.BeginForm vs jQuery Form Plugin

于 2012-04-07T07:18:49.593 回答