我試圖建立一個收件箱,這是非常類似於Facebook的消息收件箱,你有一個對話列表(我只想要一個消息標題列表),當你點擊對話或消息標題,我希望整個消息在局部視圖中呈現在旁邊。問題發送數據到PartialView C#MVC
這裏是我的收件箱視圖:
@model BlocketProject.Models.ViewModels.ProfilePageViewModel
@{
ViewBag.Title = "Inbox";
}
<h2>Dina meddelanden:</h2><br />
<div class="left">
<table id="messageTable">
@foreach (var message in Model.UserMessages)
{
<tr>
<td>
<button type="submit" class="messageButton">
@if (message.Unread == true)
{
<h4 style="font-weight:bold;">@message.MessageTitle</h4>
}
else if (message.Unread == false)
{
<h4>@message.MessageTitle</h4>
}
</button>
</td>
</tr>
}
</table>
</div>
<div class="right">
@Html.Partial("ReadMessage")
</div>
當我點擊這個消息元素是一個按鈕,我想通過這MESSAGEID到PartialView ReadMessage:
@model BlocketProject.Models.DbClasses.DbMessages
<h2>@Model.MessageTitle</h2><br />
<p>@Model.MessageText</p>
和控制器外觀像這樣:
[HttpPost]
public ActionResult Inbox()
{
var allMessages = ConnectionHelper.GetAllMessages(ConnectionHelper.GetUserByEmail(User.Identity.Name).UserId);
var model = new ProfilePageViewModel();
model.UserMessages = allMessages;
return View("Inbox", model);
}
[HttpPost]
public ActionResult ReadMessage(int messageId)
{
var model = ConnectionHelper.GetMessageByMessageId(messageId);
return PartialView("ReadMessage", model);
}
我試着通過郵件傳遞messageId,你可以看到在我的控制器中,但然後partialView作爲新頁面返回,我只是想在收件箱視圖中呈現它。
任何想法?
編輯: Jonesy的答案固定我的問題,當我編輯這樣說:
控制器:
public ActionResult ReadMessage(int messageId)
{
var model = ConnectionHelper.GetMessageByMessageId(messageId);
return PartialView("ReadMessage", model);
}
景觀:運行
<div class="left">
<table id="messageTable">
@foreach (var message in Model.UserMessages)
{
<tr>
<td>
@using (Ajax.BeginForm("ReadMessage", new { @messageId = message.MessageId }, new AjaxOptions { UpdateTargetId = "showMessage" }, FormMethod.Post))
{
<button type="submit" class="messageButton">
@if (message.Unread == true)
{
<h4 style="font-weight:bold;">@message.MessageTitle</h4>
}
else if (message.Unread == false)
{
<h4>@message.MessageTitle</h4>
}
</button>
}
</td>
</tr>
}
</table>
</div>
<div class="right" id="showMessage">
@Html.Partial("ReadMessage", new BlocketProject.Models.DbClasses.DbMessages())
</div>
您必須對PartialView進行Ajax調用並獲取PartialView響應並更新視圖 – 2014-10-06 13:36:11