2012-05-23 116 views
1

查看:Ajax請求不工作(asp.net-MVC)

@{ 
    AjaxOptions ajax = new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "sub_id" }; 
    Layout = null;  
} 

<div id="sub_id"></div> 

@using (Ajax.BeginForm(ajax)) 
{ 
    @Html.TextBox("email"); 
    <input type="submit" value="подписаться" /> 
} 

控制器:

[HttpPost] 
public ContentResult LeftMenuSubscription(string email) 
{ 
    return new ContentResult(){Content = "<script>alert('Thanks')</script>"}; 
} 

「謝謝」 警報顯示。

但在div sub_id設置所有頁面(<title></title><div>...</div>)。

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

- 已連接。

HTML:

<html> 
    <head> 
     <title>Главная страница</title> 
     <link href="/Content/Site.css" rel="stylesheet" type="text/css"> 
     <script src="/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script> 
     <script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"</script> 
     <script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script> 
     <script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script> 
     <script src="/Scripts/jQueryFixes.js" type="text/javascript"></script> 
    </head> 
    <body> 
     .... 
     <form action="/" data-ajax="true" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#sub_id" id="form0" method="post"> 
      <input id="email" name="email" type="text" value=""> 
      <input type="submit" value="подписаться"> 
     </form> 
     .... 
    </body> 
</html> 

可能是什麼問題呢?

+0

*工作非常適合我「但在DIV‘sub_id’設置的所有頁面(......)。」 *你是什麼意思?你有什麼錯誤/問題? – mattytommo

+0

IN「sub_id」應該得到 Mediator

回答

1

在我看來,像你的Ajax選項不完整。我相信你需要添加你是從請求行動:<script>alert('Thanks')</script>

@using (Ajax.BeginForm("ActionName", "ControllerName", ajax)) 
{ 
    @Html.TextBox("email"); 
    <input type="submit" value="подписаться" /> 
} 

在測試我得到一個彈出警報,而這正是應該發生什麼,因爲你是返回一個腳本,上面寫着運行此

如果你只是想在div顯示Thanks然後不返回腳本標籤

使用這個,如果你只是想有感謝在div

[HttpPost] 
public ContentResult Test(string email) 
    return new ContentResult() { Content = "<span>Thanks</span>" }; 
} 
012顯示的字

此使用修改後的形式

@using (Ajax.BeginForm("Test", "Test", ajax)) 
{ 
    @Html.TextBox("email"); 
    <input type="submit" value="Save" /> 
} 
+0

奇怪,但它有幫助 – Mediator