我正在使用asp.net mvc 4 VB.NET與jquery 1.8.3和jquery-ui 1.9.2和標題表明:我的jquery回調給我的控制器給我空模型。 函數確實被調用,但沒有設置我的模型的屬性。 這裏是場景:我有一個無序列表,裏面有幾個li。當我點擊li時,我從li中的隱藏字段獲得值。這個值是我想要傳遞的模型。 在我在控制器中的操作中,我使用提供的模型設置了局部視圖並將其返回。然後我用返回的部分視圖覆蓋div來完成我的jquery腳本。mvc 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。出於某種原因,它會發生錯誤。
我希望我們可以共同努力!
謝謝你的回答,但看起來我還不夠具體。我的模型落後於幾個關係層次。我也需要那些關係層次。設置每個值不是一個選項,因爲它會列出太多的屬性。 – whodares
不,你很清楚。我擔心模型綁定器不是某種帶有水晶球的巫師,它將無處不在地綁定你的模型。如果您沒有將值發送給您的控制器操作,您將無法獲取它們。就這麼簡單。如果你不想發送所有的屬性,那麼只發送這個模型的id,然後使用這個id在控制器動作中查詢你的後端,以便檢索整個模型。很顯然,只有在視圖中沒有被修改的屬性纔是真實的。對於所有其他你需要發送它們,如果你希望取回他們。 –
我最後的手段是將我的整個列表作爲模型從剃刀和jQuery的組合返回,然後將隱藏的字段更改爲id值。在mvc控制器操作中,我將在列表中的某個地方執行操作。然而,如果名單太大,這將會消耗大量資源,這就是我尋找這種解決方案的原因。如果你有更好的解決方案,我會永遠喜歡聽到它。我可能在這裏錯過了一些東西。 – whodares