我的观点如下:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "Get", InsertionMode = InsertionMode.Replace, UpdateTargetId = "DisplayPatients" }))
{
<input type="search" name="searchTerm" />
<input type="submit" value="Do Search" />
}
每当我尝试编译并查看我得到的html页面的来源时,我明白了,
<form action="/" data-ajax="true" data-ajax-method="Get" data-ajax-mode="replace" data-ajax-update="#DisplayPatients" id="form0"
method="post">
但是,在我的Ajax.BeginForm中,我指定了HttpMethod = Get
。尽管如此,我在输出html页面中得到了method = "post"
。
任何想法为什么?提前谢谢。
编辑:
我甚至在浏览器中通过view-source
检查了我的网页来源。这表明:
<script src="/Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
<form action="/" data-ajax="true" data-ajax-method="Get" data-ajax-mode="replace" data-ajax-update="#DisplayPatients" id="form0" method="post"> <input type="search" name="searchTerm" />
(注意脚本(jquery-unobstrusive)实际上就在那里)
答案 0 :(得分:6)
但是,在我的Ajax.BeginForm中,我指定了HttpMethod = Get。尽管 就是这样,我在输出html页面中得到了method =“post”。
jquery.unobtrusive-ajax.js
脚本忽略method
属性并使用data-ajax-method
(如果存在)。所以实际的请求将是GET。查看您的Google Chrome开发者控制台的“网络”标签,查看。
答案 1 :(得分:3)
即使包含jQuery文件有效,我仍然觉得在那里安装POST是不正确的。您可以通过在html属性中指定它来“覆盖”它:
@using (Ajax.BeginForm("Action", "Controller", null, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "results" }, new { @id = "search", @role = "search", @method="get" }))
您可以使用此hack将其设置为null或空白。仅供参考。