2013-02-15 99 views
1

我有Ajax的问题​​。 我想制作多个表格,并在用部分视图提交后,将包含一个的div替换为一个。当我仅使用一种形式时,它正在为我工​​作。我不知道我在这里做错了什么。也许这是由于自定义编辑器? 这是我的代码,尝试帮助我,我一直在尝试做这个为期2天。Ajax在ASP.NET MVC3 Razor

指数

@model MetriceWeb.Models.TaskInputModel 
@{ 
    ViewBag.Title = "Tasks"; 
} 
<h3> 
    Tasks</h3> 

@if (Model.Values.Count == 0) 
{ 
    <p>No pendings forms for you at the moment</p> 
} 
else 
{ 
    @Html.EditorFor(x => x.Values) 
} 

TaskInputValue(editorfor)

@model MetriceWeb.Models.TaskInputValue 
@{string s = "task" + Model.TaskId;} 

@using (Ajax.BeginForm("GetFromLibrary", "Metrice", new AjaxOptions 
{ 
HttpMethod = "Get", 
UpdateTargetId = s, 
InsertionMode = InsertionMode.Replace 
})) 
{ 
<div class="editor-field" id="@s"> 
@Html.HiddenFor(x => x.TaskId, new { @class = "TaskId" , id = "TaskId" }) 
@Html.HiddenFor(x => x.InputId, new { @class = "InputId" }) 
<h2> 
@Html.DisplayFor(x => x.Task) 
</h2> 
<span>Created: </span> 
@Html.DisplayFor(x => x.Date) 

<div> 
Input Value 

    @Html.EditorFor(x => x.DateValue) 
    @Html.ValidationMessageFor(x => x.DateValue) 
</div> 
<input type="submit" value="Submit" /> 
</div> 
<br /> 
} 

它在我的控制输入法,我就要回局部视图。提交后我的div没有被替换,整个新网站被加载。这里有什么问题?请帮助我,我非常需要。

+1

请检查“jquery.unobtrusive-ajax.js”是否在加载页面时被引用!你也可以发布你的控制器方法吗? – nemesv 2013-02-15 16:17:18

+0

我的天啊。我有时候真的很愚蠢。我没有包括这个参考。谢谢你,我很抱歉,我花了你的时间和我的愚蠢问题。 – 2013-02-15 16:21:34

回答

1

为了将Ajax佣工像Ajax.BeginForm正常工作(如Ajax请求),你需要在你看来参考下面的JavaScript文件

jquery.unobtrusive-ajax.js 

(当然是jQuery的前)

Unobtrusive Ajax in ASP.NET MVC 3

一个有趣的注意事项:因为没有发射实际的JavaScript 当您使用不显眼的Ajax时,如果您忘记包含一个或其他脚本,则在尝试提交 Ajax请求时不会看到任何错误;它只会表现得像一个非Ajax请求。