ajax - MVC4 - Ajax.BeginForm 和部分 View 给出 'undefined'

标签 ajax asp.net-mvc

我正在处理一项事件预订,但我在使用部分 View 的 ajax.beginform 时遇到了问题。当我点击提交时,它只是转到一个新页面,左上角有一个“未定义”。我的布局页面中有“../../Scripts/jquery.unobtrusive-ajax.min.js”。我想要做的是,当用户提交表单时,div“AjaxTest”会使用局部 View 进行更新,并且表单位于搜索结果下方。

这是我到目前为止的内容(我去掉了所有的结构和样式以便于阅读):

主视图 - 事件

@model Project.Models.ActivityModel
<div id="AjaxTest"></div>

@using (Ajax.BeginForm(new AjaxOptions
  {
   UpdateTargetId = "AjaxTest",
   InsertionMode = InsertionMode.Replace, 
   HttpMethod = "POST"
  }))

  {
    @Html.ValidationSummary(true)
      @Html.TextBoxFor(x => x.Activity_CityName)
        <div class="editor-label">   
            <strong>@Html.LabelFor(x => x.Activity_StartDate)</strong>
        </div> 
        <div class="editor-field">
            <input id="checkin" type="text" name="Activity_StartDate" />
        </div>
      @Html.TextBoxFor(x => x.Activity_EndDate)
      @Html.DropDownListFor(x => x.Activity_NumAdults, AdultNum)
      @Html.DropDownListFor(x => x.Activity_NumChildren)
      @Html.DropDownListFor(x => x.Activity_ChildAge1, ChildAge)
      @Html.DropDownListFor(x => x.Activity_ChildAge2, ChildAge)
      @Html.DropDownListFor(x => x.Activity_ChildAge3, ChildAge)

     <div class="submitbutton"> 
        <input data-inline="true"type="submit" id="activity_search" value="Search" />
    </div> 
  }

Controller

[HttpPost]
    public ActionResult Activities(ActivityModel activitysubmission) {
       return PartialView("PartialActivities_Success", activitysubmission);
    }

局部 View - PartialActivities_Success

@model Project.Models.ActivityModel

<p>City: @Model.Activity_CityName</p>
<p>StartDate: @Model.Activity_StartDate</p>
<p>EndDate: @Model.Activity_EndDate</p>

<div>
    <p><strong>Ticket</strong></p>
    <p>Number of Adults: @Model.Activity_NumAdults</p>
    <p>Number of Children: @Model.Activity_NumChildren</p>
    <p>Child 1 age: @Model.Activity_ChildAge1</p>
    <p>Child 2 age: @Model.Activity_ChildAge2</p>
    <p>Child 3 age: @Model.Activity_ChildAge3</p>
</div>

布局页面中的脚本

  <script src="../../Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"> </script>
    <script src="../../Scripts/xdate.js" type="text/javascript"></script>
    <script src="../../Scripts/xdate.i18n.js" type="text/javascript"></script>
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
    <script>
        $(document).bind("mobileinit", function() {
            // As of Beta 2, jQuery Mobile's Ajax navigation does not work in all cases (e.g.,
            // when navigating from a mobile to a non-mobile page, or when clicking "back"
            // after a form post), hence disabling it.
            $.mobile.ajaxEnabled = true; // originally false.
        });
    </script>    

最佳答案

我注意到代码中有一个错误。你的 div 有一个 id Ajaxtest 但你传递给 BeginRequest 的参数是 AjaxTest T 是大写的

关于ajax - MVC4 - Ajax.BeginForm 和部分 View 给出 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11036942/

相关文章:

javascript - $ ("#id").ajaxStart(...) 在 ajax 请求期间被调用两次

javascript - 将文件从客户端上传到 Azure Blob 存储 | MVC

asp.net-mvc - asp.net mvc 未授权响应是空白页?

c# - 身份验证中间件

asp.net-mvc - ASPNET MVC 自定义路由失败,返回 "No type was found that matches the controller named ' Home'。”

javascript - 单击时调用函数而不是 onload

javascript - ajax jQuery 中的 getAttribute()

javascript - 如何在页面卸载/离开时发送 AJAX 请求?

javascript - IE9 - 使用 jQuery 将 html 表加载到页面中

javascript - mvc3 验证输入 'not-equal-to'