【发布时间】:2012-04-06 20:14:09
【问题描述】:
我需要做的就是创建一个简单的搜索页面,在部分视图中显示结果。我有一个搜索文本框和一个搜索提交按钮。我遵循了我在网上找到的教程,该教程似乎非常容易实现,但我在这里遗漏了一些东西。当我单击搜索按钮时,没有任何反应。任何关于我做错或遗漏的想法将不胜感激。
我在主布局页面中包含以下脚本文件
@Script("jquery-1.5.1.min.js")
@Script("modernizr-1.7.min.js")
@Script("jquery-ui.min.js")
@Script("jquery.unobtrusive-ajax.js")
@Script("jquery.validate.min.js")
@Script("jquery.validate.unobtrusive.min.js")
@helper Script(string scriptName)
{
<script src="@Url.Content("~/Scripts/" + scriptName)" type="text/javascript"> </script>
}
主搜索视图称为 AdminMenu。这列在我的项目中名为 Admin 的区域下。
我的主视图中的以下代码
@using (Ajax.BeginForm("AdminSearch", "AdminMenu", new {area = "Admin"}, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "searchResults"}))
{
<input type="text" name="q" />
<input type="submit" value="Search"/>
}
<div id="searchResults">
</div>
我的部分视图中的代码_adminSearch
<div id="searchResults">
<div class="entitybox">
@{
var grid = new WebGrid(
Model,
defaultSort: "Name", canPage: false
);
}
@grid.GetHtml(
tableStyle: "_tableGrid",
columns: grid.Columns
(
grid.Column("Name", "Name", item => @Html.ActionLink((string)item.Name, "SelectRecord", new { controller = "Menu", agencyKey = item.Id, name = item.Name }))
)
)
</div>
</div>
控制器代码
public class AdminMenuController : Controller
{
public ActionResult AdminMenu()
{
return View();
}
public PartialViewResult AdminSearch(string q)
{
Records results = AgencyBusiness.GetAdminSearch(q);
return PartialView("_adminSearch", results);
}
}
当点击搜索按钮时,没有任何反应。如果您在控制器类中的 AdminSearch 方法上放置一个断点,它将永远不会被命中。
提前感谢您的宝贵时间。
【问题讨论】:
-
听起来像是 javascript 错误。您确定所有脚本都已正确加载吗?浏览器是否抛出任何 javascript 错误? Chrome 开发者工具或带有 Firebug 的 Firefox 可以提供对这些问题的洞察(如果你还不知道:))
-
在 IE、Chrome 或 Firefox 中未检测到 javascript 错误
-
如果你在你的视图中执行一个Ajax.BeginForm,在查看页面html源代码时是否应该添加任何表单文本或脚本。我得到的只是查看页面源代码的输入和 div 标签。就好像他们一个人在那里,没有任何联系。
-
对此不确定,但我希望您的输入至少有一个 Form 标签,因为 AJAX 将序列化表单并提交给表单操作。由于是MS ajax形式,我没有真正使用过,所以我无法真正回答。
标签: asp.net asp.net-mvc asp.net-mvc-3 jquery