Мой Search.cshtml имеет div с именем "search-results", который должен быть обновлен. SearchResults - это имя действия. Я делал это много раз в проектах MVC2 / VS2008, но это мой первый опыт использования MVC3 и VS2010.
Проблема в том, что вместо того, чтобы мой результат поиска отображался в моем элементе div, при нажатии на кнопку «Отправить» перенаправляется мое частичное отображение в виде отдельной страницы.
Я читал, что это может быть потому, что Ajax не включен. Мой _Layout.cshtml выглядит так:
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
<script src="@Url.Content("~/Scripts/2011.2.712/jquery-1.5.1.min.js")" type="text/javascript"></script>
<link href="@Url.Content("~/Content/themes/base/jquery.ui.core.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/themes/base/jquery.ui.datepicker.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/themes/base/jquery.ui.theme.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/main.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/2011.2.712/jquery-1.5.1.min.js")" type="text/javascript"></script>
@(Html.Telerik().StyleSheetRegistrar().DefaultGroup(group => group.Add("telerik.common.css").Add("telerik.transparent.css").Combined(true).Compress(true)))
</head>
<body>
<div class="page">
<div id="header">
<div id="title">
<h1>My MVC Application</h1>
</div>
@(Html.Telerik().Menu()
.Name("menu")
.Items(menu => {
menu.Add().Text("Home").Action("Index", "Home");
menu.Add().Text("About").Action("About", "Home");
menu.Add().Text("Employees").Action("List", "Employee");
}))
</div>
<div id="main">
@RenderBody()
<div id="footer">
</div>
</div>
</div>
@(Html.Telerik().ScriptRegistrar().DefaultGroup(group => group.Combined(true).Compress(true)))</body>
</html>
Нужно ли добавлять MicrosoftMvcAjax.js или jquery.unobtrusive-ajax.js в? Мой web.config (root) содержит следующее:
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Если я добавляю MicrosoftMvcAjax.js в конце элемента, я получаю сообщение о том, что пространство имен «Тип» является неопределенной ошибкой из первой строки MicrosoftMvcAjax.js:
Type.registerNamespace('Sys.Mvc');Sys.Mvc.$create_AjaxOptions=function(){return {};}
Что мне здесь не хватает. Я уверен, что мой код в порядке, поскольку он почти полностью скопировал мои проекты MVC2.