我一直在尋找關於如何在MVC項目中使用AJAX的信息,至今它只是讓我困惑了一下。我相信我現在還沒有太多實現一個Ajax ActionLink,它會導致數據庫條目發生變化,所以這種變化會反映到視圖中。但顯然,這段代碼現在的問題是錯誤的:ASP.NET MVC使用Ajax.ActionLink在數據庫中進行更改
public void MarkAsRead(Models.MessageModel message)
{
using (var db = new MessengerDBEntities())
{
var dbMessage = db.Messages.FirstOrDefault(m => m.messageID == message.Id);
// Error handling
if (dbMessage == null)
{
ViewBag.ResultMessage =
"Something bad has happened with that message in the meantime. Please log out and in again.";
return;
}
dbMessage.messageRead = true;
db.SaveChanges();
return;
}
}
這是剃刀代碼:
@if (Model.Count() > 0)
{
<br /><br />
string messageClass;
foreach (var message in Model)
{
messageClass = message.Read ? "message-header" : "message-unread-header";
<div class="message-container">
<div class="@messageClass">
@if (!message.Read)
{
<text>New </text>
}
From: @message.Sender
@if(!message.Read)
{
<span class="mark-read-span">
@Ajax.ActionLink("Mark as read", "MarkAsRead", message, new AjaxOptions())
</span>
}
</div>
<div class="message-mainbody">
@message.Content
</div>
<div class="message-footer">
At: @message.Timestamp.ToShortDateString() @message.Timestamp.ToShortTimeString()
</div>
</div>
<br />
}
}
else
{
<div id="no-messages-div">You haven't got any messages yet. :(</div>
}
在視圖中,我通過對象(接收的消息)的集合迭代。對於每條消息,我檢查它是否已被讀取,如果不是,則會有一條鏈接將其傾斜到讀取狀態。我也分配一個不同的類到div顯示基於wheather這是一個新的消息或不是消息:
@messageClass = message.Read ? "message-header" : "message-unread-header";
<div class="message-container">
<div class="@messageClass">
...
我懷疑我用的是Ajax.ActionLink助手用錯AjaxOptions參數,但我沒在閱讀有關MSDN的解決方案之後,我們不會接近解決方案。 我該怎麼做呢?
請顯示您的完整視圖 –
查看太長的評論,編輯的問題。 – user2082422
相關:http://stackoverflow.com/questions/5586327/how-to-use-ajax-actionlink – DaveParsons