1

我对 Ajax 有疑问。我想制作多个表单并在提交后用部分视图替换包含一个的 div。当我只使用一种表格时,它对我有用。我不知道我在这里做错了什么。也许是因为自定义编辑器?这是我的代码,请尝试帮助我,我已经尝试了 2 天。

指数

@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(编辑器)

@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 没有被替换,整个新站点被加载。这里有什么问题?请帮助我,我非常需要。

4

1 回答 1

1

为了使Ajax助手Ajax.BeginForm能够正常工作(例如发送 AJAX 请求),您需要在视图中参考以下 JavaScript 文件

jquery.unobtrusive-ajax.js

(当然在那个jquery之前)

来自ASP.NET MVC 3 中的 Unobtrusive Ajax

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

于 2013-02-15T16:26:56.523 回答