c# - 使用 AJAX 加载部分 View 不起作用

标签 c# jquery asp.net-mvc

请原谅,我是 MVC 和 AJAX 新手。

目前我只是提交一个表单,我想使用表单中的数据使用ajax更新部分 View 中的表。

我的_UserInfo部分 View 如下所示:

@model IEnumerable<Dashboard.Models.UserInfo>
<table>
    <tr>
        <th>
           Firstname
        </th>
        <th>
           Lastname
        </th>
        <th>
            EmailAddress
        </th>
        <th>
        </th>
    </tr>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.firstName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.surname)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.emailAddress)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.SAMuserName)
        </td>
    </tr>
}
</table>

我的主用户 View 如下所示:

@model Dashboard.Models.User
@Scripts.Render("~/bundles/jqueryval")

@using (Ajax.BeginForm("_UserInfo", "User", new AjaxOptions()
                        {
                            HttpMethod = "GET",
                            UpdateTargetId = "results",
                            InsertionMode = InsertionMode.Replace
                        }))
{

    <fieldset>
    //...My Form 

        <p>
            <input type="submit" value="Find" />
        </p>
    </fieldset>
}

<div id="results">
</div>

最后这是我的UserController:

public PartialViewResult UserResults(User person)
{
    UserInfo personInfo = new UserInfo();

    //....Doing stuff

    return PartialView("_userInfo", personInfo);
}

现在我知道这可能不好。但这是我以我有限的知识尝试过的最好的尝试。

当我单击“用户” View 上的按钮时,收到 404 错误,指出找不到 _UserInfo。

我相信我所有问题的根源在于

 @using (Ajax.BeginForm("_UserInfo", "User", new AjaxOptions()
                        {
                            HttpMethod = "GET",
                            UpdateTargetId = "results",
                            InsertionMode = InsertionMode.Replace
                        }))

但据我所知,我不知道出了什么问题。


*编辑:*正如有人向我指出的那样,我错误地创建了 HTML 表单。我已经将其更改为

@using (Ajax.BeginForm("UserResults", "User", new AjaxOptions(){...}

我的行动现在正在被调用!但是,我的部分 View 没有加载到屏幕上。

最佳答案

对于您的特定重载,前两个字符串是 ActionName 和 ControllerName MSDN 。因此,它应该像这样镜像您的 Controller :

@using (Ajax.BeginForm("userResults", "User", new AjaxOptions()
                    {
                        HttpMethod = "GET",
                        UpdateTargetId = "results",
                        InsertionMode = InsertionMode.Replace
                    }))

此外,值得注意的是,在以下命名约定中,userResults 应该重命名为 UserResults

编辑: 确保您同时使用 Ajax.BeginForm (请参阅更新),并且您还已将 ajax unobtrusive 脚本包含到您的包中。在 BundleConfig.RegisterBundles 中,您应该添加以下 bundle 。

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*"));

并在 HTML 中,确保调用两个包。

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")

关于c# - 使用 AJAX 加载部分 View 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19864458/

相关文章:

asp.net-mvc - 如何使用 asp.net mvc 3 和 ListBoxFor 显示多个选择?

c# - 在 C# 中将 Powershell PSObject 作为 DataTable 返回

c# - 正则表达式 - 订购多行 SQL 字符串

javascript - 为缩略图 slider 添加淡入淡出效果或预加载 li 元素

php - 如何使用 PHP 构建具有动态突出显示的网站菜单?

asp.net-mvc - 自动更新 Entity Framework 模型

asp.net-mvc - 有没有人见过一个好的 ASP.NET MVC 事件月历

c# - 使用 MySql.Data.MySqlClient::MySqlCommand 字符串格式的 MySQL C# 查询问题

c# - 组合方法

javascript - 使用 flask, jinja2 将 html 复选框值存储到列表中