![](/img/trans.png)
[英]Calling server side function with parameter from Javascript in ASP.NET
[英]ASP.NET MVC calling server from javascript function with ajax
我正在嘗試從部分視圖中的javascript函數中調用控制器中的以下action方法:
[HttpPost]
public JsonResult RemoveNotifications(IList<Notification> notifications)
{
Context.Notifications.RemoveRange(notifications);
return new JsonResult();
}
這是應該從視圖調用服務器的函數:
function show(message) {
message += "</ul>"
document.getElementById('notifications').innerHTML = message;
$.ajax({
url: '@Url.Action("RemoveNotifications", "Notification")',
type: 'POST',
data: { 'notifications': "@Model.Notifications" },
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data) {
}
});
}
第一部分工作正常,但是$ .ajax部分沒有任何作用。 我還在視圖頂部添加了以下內容:
<script src="TandForum.dk/Scripts/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="TandForum.dk/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="TandForum.dk/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
當您將@Model.Notifications
傳遞給data
參數時,它會嘗試對其進行序列化,以便可以將其傳遞給控制器操作。 由於javascript不了解您的Notification
類的構造方式,因此將無法正常工作。
如果您需要指定要刪除的通知,則最好將通知ID的集合傳遞給操作,例如,如果您的Notification
類具有名為Id
int
類型的屬性,則您的方法將變為:
public JsonResult RemoveNotifications(IEnumerable<int> notificationIds)
{
Context.Notifications.RemoveAll(n => notificationIds.Contains(n.Id));
return new JsonResult();
}
但是,如果您始終要刪除所有通知,請使用與最初填充視圖相同的集合,如上面的注釋所述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.