c# - PartialView 不渲染在 ajax post 调用上更新的模型

标签 c# asp.net-mvc asp.net-mvc-4

<分区>

我正在尝试执行一个应用程序,该应用程序请求对 Controller 执行操作并接收回包含更新信息的模型。步骤很简单,

  1. 在表格中填写一些信息。
  2. 点击某个按钮调用 Controller 上的操作。
  3. 该操作更新接收到的模型并使用 PartialView 方法将其发回。

但是,模型不支持更新!

代码:

    <div id="div-dialog"> // THIS IS A DIALOG JQUERYUI
        <div id="div_toolbar" class="ui-widget-header ui-corner-all"> //THIS IS A TOOLBAR JQUERYUI
            <div style="margin-right: auto; margin-left: auto; width: 420px">
                <button id="btn_novo">Novo</button>
                <button id="btn_gravar">Gravar</button>
                <button id="btn_limpar">Limpar</button>
                <button id="btn_excluir">Excluir</button>
            </div>  
        </div>
    </div>
    <div id="partial-render"> //HERE GOES THE PARTIAL VIEW
        @Html.Partial("AvaliationPeriodPartial")
    </div>    

<script type="text/javascript">
    $(function () {
        $('#div-dialog').dialog({
            height: 'auto',
            width: 600
        });

        $('#btn_novo').button({ icons: { primary: "ui-icon-document"} }).button('enable').click(function () {

            /* ON THIS FUNCTION I SERIALIZE THE INPUTS TO SEND IT TO THE ACTION ON CONTROLLER
               TO UPDATE THE INFORMATION */

            var formData = $('input').serialize();

            $('input[disabled]').each(function () {
                formData = formData + '&' + $(this).attr('name') + '=' + $(this).val();
            });

            //HERE THE AJAX CALL
            $.post('@Url.Action("teste", "Import")', formData, function (html) {
                $('#partial-render').html(html);
            }, 'html');
    });
</script>

这是 _Layout 页面代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Bem-vindo | @ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <link href="@Url.Content("~/Content/themes/redmond/jquery-ui-1.9.1.custom.min.css")" rel="stylesheet" type="text/css" />    
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.8.3.min.js")"></script>
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.9.2.custom.min.js")"></script>
    <script type="text/javascript" src="@Url.Content("~/Scripts/MicrosoftAjax.js")"></script>
    <script type="text/javascript" src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")"></script>
    <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
</head>

<body>
    @RenderBody()
</body>
</html>

这是 PartialView 的代码:

@model GdaeMVC4.Models.ScreenModels.AvaliationPeriod
@Html.LabelFor(m => m.IdAvaliation)
@Html.TextBoxFor(m => m.IdAvaliation)
@Html.TextBoxFor(m => m.Description)

最佳答案

中断您的 javascript 代码(例如使用 firebug)并验证您的表单数据确实按您预期的方式发送。

如果 formData 看起来是正确的,请中断您的 Controller Action 并验证模型构建器是否已将 formdata 正确转换为模型。

额外的小知识:默认的模型构建器不会将 bool 值的“1”转换为“真”,也许这就是您的问题?

关于c# - PartialView 不渲染在 ajax post 调用上更新的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13650431/

相关文章:

c# - ASP.NET MVC : code:-32000 message: No script for id: 32

javascript - 将数据从 Controller 传递到 javascript(绕过 View )

c# - 插入数据库时​​如何以编程方式覆盖 Auto_Increment 值

c# - LinkedIn OAUTH - 仍然无法使用 DotNetOpenAuth.AspNet 获取电子邮件地址

asp.net-mvc - 如何在 MVC 中更改由 @Html 帮助程序生成的 'data-val-number' 消息验证

c# - 使用 SQL 存储过程和 C# 读取大量数据 (SQL Server 2005)

c# - 如何从datagridview插入更新删除mysql数据库

c# - 手动制作WPF项目

c# - 在 C# 中 XML 反序列化后如何重建对象层次结构/引用

asp.net-mvc - ASP.NET MVC : Page-specific logic