2011-10-11 31 views
0

我有問題發佈模型到控制器操作使用AJAX幫手。控制器行爲根本沒有受到打擊。MVC-似乎無法發佈到控制器操作使用AJAX幫手

代碼:

查看:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ServiceNumberModel>" %> 

<div id="ServiceNumberPanel"> 
    <h1> 
     Based on your location we offer different plans</h1> 
    <% using (Ajax.BeginForm("AvailablePlans", "ServiceCheck", new AjaxOptions { UpdateTargetId = "AdslPlansPanel", HttpMethod = "Post" })) 
     { %> 
      <%=Html.ValidationSummary(true)%> 
      Your Phone Number: 
      <%=Html.TextBoxFor(m => m.HomePhoneNumber)%><br /> 
      <%=Html.CheckBoxFor(m => m.BundleWithHomePhone)%>Bundle with Home Phone? <br/> 
      <input id="CheckServiceAvailabilityButton" type="submit" value="Check"/> 
    <% } %> 
</div> 

型號:

using System.ComponentModel; 
using System.ComponentModel.DataAnnotations; 

namespace ServiceCheck 
{ 
    public class ServiceNumberModel 
    { 
     [Required(ErrorMessage = "Please enter your phone number.")] 
     [RegularExpression(@"^[0]\d{9}$", ErrorMessage = "Please enter your phone number, including the area code")] 
     [DisplayName("Phone Number:")] 
     public string HomePhoneNumber { get; set; } 


     public bool BundleWithHomePhone { get; set; } 
    } 
} 

控制器:

[HttpPost] 
     public ActionResult AvailablePlans(ServiceNumberModel serviceNumberModel) 
     { 
      if (serviceNumberModel.BundleWithHomePhone) 
       return ReturnAvailableBundledPlans(serviceNumberModel); 

      return View("Index"); 
     } 

生成的HTML:

<div id="ServiceNumberPanel"> 
    <h1> 
     Based on your location we offer different plans</h1> 
    <form action="/ServiceCheck/AvailablePlans" data-ajax="true" data-ajax-method="Post" data-ajax-mode="replace" data-ajax-update="#AdslPlansPanel" id="form0" method="post"> 
      Your Phone Number: 
      <input data-val="true" data-val-regex="Please enter your phone number, including the area code" data-val-regex-pattern="^[0]\d{9}$" data-val-required="Please enter your phone number." id="HomePhoneNumber" name="HomePhoneNumber" type="text" value="" /><br /> 
      <input data-val="true" data-val-required="The BundleWithHomePhone field is required." id="BundleWithHomePhone" name="BundleWithHomePhone" type="checkbox" value="true" /><input name="BundleWithHomePhone" type="hidden" value="false" />Bundle with Home Phone? <br/> 

      <input id="CheckServiceAvailabilityButton" type="submit" value="Check"/> 
    </form> 
</div> 

行爲: 當我點擊提交,我得到 '資源無法找到錯誤':

The resource cannot be found. Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

Requested URL: /ServiceCheck

有趣的是,當我看着使用螢火蟲的來源,我看不到表格標籤:

<div class="ExistingContent"> 
<h1>ServiceCheck</h1> 
<div id="ServiceNumberPanel"> 
<div id="ServiceNumberPanel"> 
<h1> Based on your location we offer different plans</h1> 
Your Phone Number: 
<input id="HomePhoneNumber" type="text" value="" name="HomePhoneNumber" data-val-required="Please enter your phone number." data-val-regex-pattern="^[0]\d{9}$" data-val-regex="Please enter your phone number, including the area code" data-val="true"> 
<br> 
<input id="BundleWithHomePhone" type="checkbox" value="true" name="BundleWithHomePhone" data-val-required="The BundleWithHomePhone field is required." data-val="true"> 
<input type="hidden" value="false" name="BundleWithHomePhone"> 
Bundle with Home Phone? 
<br> 
<input id="CheckServiceAvailabilityButton" type="submit" value="Check"> 
</div> 
<div id="Div1"> 
</div> 
</div> 

另外,如果我更改視圖使用HTML幫助它擊中控制器沒有問題:

<div id="Div1"> 
    <h1> 
     Based on your location we offer different plans</h1> 
    <% using (Html.BeginForm("AvailablePlans", "ServiceCheck")) 
     { %> 
      <%=Html.ValidationSummary(true)%> 
      Your Phone Number: 
      <%=Html.TextBoxFor(m => m.HomePhoneNumber)%><br /> 
      <%=Html.CheckBoxFor(m => m.BundleWithHomePhone)%>Bundle with Home Phone? <br/> 
      <input id="Submit1" type="submit" value="Check"/> 
    <% } %> 
</div> 

請幫助!

+0

您是否檢查過您在Global.asax中的路由配置是否正確,以便路由/ DodoBroadbandWizardMvc/ServiceCheck/AvailablePlans? –

+0

感謝您的快速反應阿納斯。當我使用HTML助手來支持AJAX幫助程序時,我可以發佈到控制器操作而沒有問題。 – Bart

+0

沒有javascript錯誤? id = AdslPlansPanel的元素在哪裏。還有一件事。您是否記得引用腳本MicrosoftAjax.debug.js和MicrosoftMvcAjax.debug.js – ingo

回答

0

我設法找到問題。

在母版頁我用,這是跨多個應用程序共享,有人加了胭脂形式:

<body> 
    <form id="form1" runat="server"> 
    <uc1:header id="Header1" runat="server" /> 
    <div class="ExistingContent"> 
     <asp:contentplaceholder id="MainContent" runat="server" /> 
    </div> 
    <uc2:footer id="Footer1" runat="server" /> 
    </form> 
</body> 

這意味着我試圖從表單中提交一個表單和該框架是默認給父母的。

一旦刪除,一切都開始按預期工作。

相關問題