我正在使用带有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。出于某种原因,它会出现错误。
我希望我们能一起解决这个问题!
答案 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