Ajax表单没有得到结果

时间:2015-05-30 18:36:59

标签: javascript c# ajax asp.net-mvc

我有一个带搜索功能的主页。从主页搜索工作正常,但当我尝试使用ajax表单再次搜索时(在url.com/search?id=biology上),我被重定向到404页面,说找不到/Search

主页上的表格:

@using (Html.BeginForm("Index", "Search", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Get, new { @class = "form-horizontal", role = "form", enctype = "multipart/form-data" }))
{
    @Html.TextBoxFor(m => m.id, new { @class = "form-control" })
    <input type="submit" value="Search" class="btn btn-default" />
}

我的Ajax表格:

@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "searchResult" }))
{
     <input class="form-control" data-val="true" data-val-required="The id field is required." id="id" name="id" type="search" value="@Request.QueryString["id"]" />
     <span class="field-validation-valid text-danger" data-valmsg-for="id" data-valmsg-replace="true"></span>

    <div class="form-group">
        <input type="submit" value="Search" class="btn btn-default" />
    </div>
}

@Html.Partial("_Results", Model)

编辑:这是生成的ajax表单的html源代码。

<form action="/Search" data-ajax="true" data-ajax-method="get" data-ajax-mode="replace" data-ajax-update="#searchResult" id="form0" method="post">                        
    <input class="form-control" data-val="true" data-val-required="The id field is required." id="id" name="id" type="search" value="biology" />
    <span class="field-validation-valid text-danger" data-valmsg-for="id" data-valmsg-replace="true"></span>

     <div class="col-md-offset-0 col-md-10">
         <input type="submit" value="Search" class="btn btn-default" />
     </div>
</form>

编辑2:从查看开发人员工具,它显示正在发生POST调用。如何将此ajax表单更改为GET?

2 个答案:

答案 0 :(得分:1)

@ User456789如果您在两种情况下都会查看生成的表单,那么您会注意到您的Ajax表单的Controller将与您的主页表单不同。这是因为您没有在上面的注释中提到的Ajax助手中提到Action@using (Ajax.BeginForm("Index", "Search", new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "searchResult" })) { <input class="form-control" data-val="true" data-val-required="The id field is required." id="id" name="id" type="search" value="@Request.QueryString["id"]" /> <span class="field-validation-valid text-danger" data-valmsg-for="id" data-valmsg-replace="true"></span> <div class="form-group"> <input type="submit" value="Search" class="btn btn-default" /> </div> } 。因此,如下所示更改您的Ajax表单代码,它应该按预期工作:

WebView

答案 1 :(得分:0)

变化:

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

要:

@using (Ajax.BeginForm("Index", "Search", new AjaxOptions { HttpMethod = "get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "searchResult" }))

您需要将表单指向MVC控制器中的正确操作。确保Index存在并返回Content