阿贾克斯与asp.net mvc的局部视图无法正常工作 [英] Ajax with asp.net mvc Partial view is not working correctly
问题描述
我试图做AJAX一个简单的例子与MVC,但其无法正常工作
我根据Wrox的,专业的asp.net mvc的3本书,第8章,复数视线阿贾克斯的视频。
我将粘贴相关code文件的code在这里,我想可能是用脚本问题,但我真的不知道。
_layout.csthml(脚本局部视图和非强制性节末)
< HTML和GT;
< HEAD>
<间的charset =UTF-8/>
<标题> @ ViewBag.Title< /标题>
@ Html.Partial(_ CSS)< /头>
<身体GT;
< DIV CLASS =页>
<报头GT;
< DIV ID =标题>
< H1>伊娃1.0 LT; / H1>
< / DIV>
< DIV ID =logindisplay>
@ Html.Partial(_ LogOnPartial)
< / DIV> <&导航GT;
< UL ID =菜单>
@if(Request.IsAuthenticated){
<立GT; @ Html.ActionLink(仪表板,索引,家庭)< /李>
<立GT; @ Html.ActionLink(位置,索引,位置)< /李>
<立GT; @ Html.ActionLink(展望,位置,UserPositionPosition)< /李>
<立GT; @ Html.ActionLink(展望史,位置,UserPositionPosition)< /李>
<立GT; @ Html.ActionLink(技术访谈,位置,UserPositionPosition)< /李>
<立GT; @ Html.ActionLink(经理访谈,位置,UserPositionPosition)< /李>
<立GT; @ Html.ActionLink(现有员工,位置,UserPositionPosition)< /李>
<立GT; @ Html.ActionLink(现有员工史,位置,UserPositionPosition)< /李>
}
@ *其他
{
<立GT; @ Html.ActionLink(登录,登录,帐户)LT; /李>
} * @
< / UL>
< / NAV>
< /头>
<节ID =主>
@RenderBody()
< /节>
<页脚GT&;
< /页脚>
< / DIV>
@ Html.Partial(_脚本)
@RenderSection(脚本,FALSE)
< /身体GT;
< / HTML>
_scripts.cshtml<脚本SRC =http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.4.min.js类型=文/ JavaScript的>< / SCRIPT>
Index.cshtml(这里我想实现AJAX效果)
@model的ICollection< Data.Model.Position>@ {
ViewBag.Title =指数;
布局=〜/查看/共享/ _Layout.cshtml
}@section脚本{
<脚本SRC =http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js类型=文/ JavaScript的>< / SCRIPT>
<脚本SRC =http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js类型=文/ JavaScript的>< / SCRIPT>
}< H2>指数< / H>&所述p为H.;
@ Html.ActionLink(新建,创建)&所述; / P>
< DIV ID =dailydeal>
@ Ajax.ActionLink(点击此处查看今天的特别!,创建,
位置,
新AjaxOptions {
UpdateTargetId =dailydeal
InsertionMode = InsertionMode.Replace,
列举HTTPMethod =POST
LoadingElementDuration = 5000,
LoadingElementId =进步
})
< / DIV>< DIV ID =进步>
载入中...
< / DIV>
<表>
&所述; TR>
<第i个
名称
< /第i
<第i个
yearsExperienceRequired
< /第i
<第i个
操作
< /第i
< / TR>@foreach(以型号VAR项){
&所述; TR>
&所述; TD>
@ Html.DisplayFor(modelItem => item.name)
< / TD>
&所述; TD>
@ Html.DisplayFor(modelItem => item.yearsExperienceRequired)
< / TD>
&所述; TD>
@ Html.ActionLink(编辑,编辑,新{ID = item.PositionID})|
@ Html.ActionLink(详细信息,详细信息,新{ID = item.PositionID})|
@ Html.ActionLink(删除,删除,新{ID = item.PositionID})
< / TD>
< / TR>
}< /表>
_Create.cshtml(与创建表单局部视图)@ {
ViewBag.Title =创建;
布局=〜/查看/共享/ _Layout.cshtml
}< H2>创建< H2>@using(Html.BeginForm()){
@ Html.ValidationSummary(真)
<&字段集GT;
<传奇>&位置LT; /传说> < DIV CLASS =编辑标记>
@ Html.LabelFor(型号=> model.name)
< / DIV>
< DIV CLASS =主编场>
@ Html.EditorFor(型号=> model.name)
@ Html.ValidationMessageFor(型号=> model.name)
< / DIV> < DIV CLASS =编辑标记>
@ Html.LabelFor(型号=> model.yearsExperienceRequired)
< / DIV>
< DIV CLASS =主编场>
@ Html.EditorFor(型号=> model.yearsExperienceRequired)
@ Html.ValidationMessageFor(型号=> model.yearsExperienceRequired)
< / DIV> &所述p为H.;
<输入类型=提交值=创建/>
&所述; / P>
< /字段集>
}< DIV>
@ Html.ActionLink(返回目录,索引)
< / DIV>
位置控制器方法
///<总结>
///创建位置的形式
///< /总结>
///<&回报GT;< /回报>
公共PartialViewResult的Create()
{
Thread.sleep代码(2000);
返回PartialView(_创建);
}
有关阿贾克斯。*
佣工(如Ajax.ActionLink)工作确保您已引用在 jquery.unobtrusive-ajax.js
脚本:
<脚本的src =@ Url.Content(〜/脚本/ jquery.unobtrusive-ajax.js)TYPE =文/ JavaScript的>< /脚本>
然后使用Firebug或Chrome开发人员工具来检查AJAX请求,看看它为什么可能失败的可能原因。
I am trying to do a simple example of ajax with mvc but its not working correctly I am based on wrox, professional asp.net mvc 3 book, chapter 8, and plural sight ajax video.
I will paste the code of the relevant code files here, I think it might be a problem with the scripts but I am not really sure.
_layout.csthml (Script partial view and non mandatory section at the end)
<html>
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
@Html.Partial("_css")
</head>
<body>
<div class="page">
<header>
<div id="title">
<h1>Eva 1.0</h1>
</div>
<div id="logindisplay">
@Html.Partial("_LogOnPartial")
</div>
<nav>
<ul id="menu">
@if(Request.IsAuthenticated) {
<li> @Html.ActionLink("DashBoard", "Index", "Home")</li>
<li> @Html.ActionLink("Positions", "Index", "Position") </li>
<li> @Html.ActionLink("Prospects", "Position", "UserPositionPosition") </li>
<li> @Html.ActionLink("Prospect History", "Position", "UserPositionPosition") </li>
<li> @Html.ActionLink("Technical Interview", "Position", "UserPositionPosition") </li>
<li> @Html.ActionLink("Manager Interview", "Position", "UserPositionPosition") </li>
<li> @Html.ActionLink("Current Employees", "Position", "UserPositionPosition") </li>
<li> @Html.ActionLink("Current Employees History", "Position", "UserPositionPosition") </li>
}
@* else
{
<li> @Html.ActionLink("Log On", "LogOn", "Account") </li>
}*@
</ul>
</nav>
</header>
<section id="main">
@RenderBody()
</section>
<footer>
</footer>
</div>
@Html.Partial("_scripts")
@RenderSection("scripts", false)
</body>
</html>
_scripts.cshtml
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.4.min.js" type="text/javascript"></script>
Index.cshtml (Where I am trying to achieve the ajax effect)
@model ICollection<Data.Model.Position>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts{
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js" type="text/javascript"></script>
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
}
<h2>Index</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<div id="dailydeal">
@Ajax.ActionLink("Click here to see today's special!", "Create",
"Position",
new AjaxOptions{
UpdateTargetId="dailydeal",
InsertionMode=InsertionMode.Replace,
HttpMethod="POST",
LoadingElementDuration=5000,
LoadingElementId="progress"
})
</div>
<div id="progress">
Loading...
</div>
<table>
<tr>
<th>
name
</th>
<th>
yearsExperienceRequired
</th>
<th>
Actions
</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.name)
</td>
<td>
@Html.DisplayFor(modelItem => item.yearsExperienceRequired)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.PositionID }) |
@Html.ActionLink("Details", "Details", new { id = item.PositionID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.PositionID })
</td>
</tr>
}
</table>
_Create.cshtml (Partial view with the create form)
@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Create<h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Position</legend>
<div class="editor-label">
@Html.LabelFor(model => model.name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.name)
@Html.ValidationMessageFor(model => model.name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.yearsExperienceRequired)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.yearsExperienceRequired)
@Html.ValidationMessageFor(model => model.yearsExperienceRequired)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
Position Controller method
/// <summary>
/// Create form of the position
/// </summary>
/// <returns></returns>
public PartialViewResult Create()
{
Thread.Sleep(2000);
return PartialView("_Create");
}
For Ajax.*
helpers (such as Ajax.ActionLink) to work make sure that you have referenced the jquery.unobtrusive-ajax.js
script:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
Then use FireBug or Chrome Developer Tools to inspect the AJAX request and see any possible reasons why it might be failing.
这篇关于阿贾克斯与asp.net mvc的局部视图无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!