mvc jquery模型到控制器空

时间:2013-01-22 10:53:11

标签: jquery asp.net-mvc

我正在使用带有jquery 1.8.3和jquery-ui 1.9.2的asp.net mvc 4 VB.NET,正如标题所示:我的控制器的jquery回调给了我空模型。 函数确实被调用,但没有设置我的模型的属性。 这是一个场景:我有一个无序的列表,里面有几个li。当我点击li时,我从li中的隐藏字段中获取值。这个值是我想要通过的模型。 在我在控制器中的操作中,我使用提供的模型设置局部视图并将其返回。然后我用返回的局部视图覆盖div以完成我的jquery脚本。

以下是代码:

带列表的Html div

<div class="listContainer">
            <ul>
                @For Each attachment As EPower.eSuite.Model.DTO.HRCore.Attachment In Model.Documents
                    @<li>
                        <input type="hidden" value="@attachment" class="test" />
                        <a href="#">
                            <span class="title">@attachment.Filename</span>
                            <span class="description">@attachment.Tag.ID</span>
                        </a>
                    </li>
                Next
            </ul>
        </div>

JQuery函数:

$('.listContainer ul li').on('click', function () {
            var jsonModel = $(this).children('input.test').val();
            $.ajax({
                type: "POST",
                url: '@Url.Action("SetPersonalDocumentPartial", "WhoIsWho")',
                data: JSON.stringify(jsonModel),
                dataType: 'json',
                contentType: 'application/json',
                error: function (t) {
                    $('.personalDocumentContent').html(t.responseText);
                },
                success: function (result) {
                    $('.personalDocumentContent').html(result);
                }
            });
        });

MVC控制器操作:

<HttpPost> _
        Public Function SetPersonalDocumentPartial(ByVal attachment As Model.DTO.HRCore.Attachment) As ActionResult
            Return PartialView("_ViewPersonalDocumentPartial", attachment)
        End Function

目前有用的东西: 我的函数成功调用了我的MVC操作,但未设置模型属性。 当我在Controller中将我的模型设置为一个设定值时,我得到了部分返回,它成功地覆盖了我的div。出于某种原因,它会出现错误。

我希望我们能一起解决这个问题!

1 个答案:

答案 0 :(得分:2)

.val()方法返回一个字符串。当你JSON.stringify一个字符串猜你得到了什么?是的,你猜对了:一根绳子。例如:JSON.stringify('foobar')为您提供'foobar'。将foobar发送到您的控制器肌动蛋白根本无助于模型绑定器。

如果您希望模型绑定器能够从请求绑定模型,请确保您已包含要在请求中绑定的此模型的所有属性:

data: JSON.stringify({ filename: $(this).children('input.test').val() })

这会设置FileName的{​​{1}}属性。如果您有其他属性,请确保包含它们:

Model.DTO.HRCore.Attachment