Для такого решения, я рекомендую вам создать JavascriptController с "JavascriptActionResult" или новым "JavascriptActionResult" на BookController наряду с представлением, которое выводит желаемый javascript. Таким образом, вы можете динамически писать Javascript с помощью бритвы, а также гарантировать, что поведение шаблона маршрута вашего MVC будет соблюдаться. При всем этом наборе, страница будет:
<script type="text/javascript" src="@Url.Action("GetAllBooksJS","Book")"></script>
PS: Существует не родной JavascriptActionResult в MVC, но вы можете продлить ActionResult выполнять ту или простую овторн Content-Type в классической функции ActionResult.
Пыльник - это рабочий корпус, выполненный Ive в MVC3.
Контроллер:
public class BookController : Controller
{
//
// GET: /Book/
public ActionResult Index()
{
return View();
}
public JsonResult GetAllBooks() {
return Json(new[] { new { name = "Book1" }, new { name = "Book2" } });
}
public ActionResult GetAllBooksJS()
{
Response.ContentType = "text/javascript";
return View();
}
}
Индекс Вид:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
<script type="text/javascript" src="@Url.Content("~/scripts/jquery-1.7.1.min.js")"> </script>
<script type="text/javascript" src="@Url.Action("GetAllBooksJS","Book")"></script>
</head>
<body>
<div>
<button>Get books ajax</button>
</div>
</body>
</html>
GetAllBooksJS Вид:
@{
Layout = null;
}
$(document).ready(function(){
$('button').on('click',function() {
GetBooksAjax();
});
});
function GetBooksAjax() {
$.ajax({
url: '@Url.Action("GetAllBooks","Book")',
type: 'POST',
dataType: 'json',
success: function(oJSON) {
$.each(oJSON,function(){
alert(this.name);
})
}
})
}
GetAllBooksJS Просмотр v2, В этой второй версии Javascript, как только он будет загружен по представлению Index, будет задействован Ajax Call, я предполагаю, что это ваш случай:
@{
Layout = null;
}
function GetBooksAjax() {
$.ajax({
url: '@Url.Action("GetAllBooks","Book")',
type: 'POST',
dataType: 'json',
success: function(oJSON) {
$.each(oJSON,function(){
alert(this.name);
})
}
})
}
GetBooksAjax();
Что ошибка приходит? –
@PKKG Нет ошибок. Но метод действия не срабатывает. – Sampath