【发布时间】:2014-09-07 06:12:10
【问题描述】:
我有一个视图Index,其中有一个内部引用的部分视图GetAlertData:
索引.cshtml
<table>
<thead>
<tr>
<th>Date</th>
<td>Message</td>
<td>Type</td>
<td>Actions</td>
</tr>
</thead>
<tbody id="tableBody">
@Html.Action("GetAlertData", new { selectedAlertType = Model.SelectedAlertType })
</tbody>
</table>
GetAlertData.cshtml
foreach (var alert in Model.UserAlerts)
{
<tr>
<td>
@alert.Date.ToString("d")
</td>
<td>
@alert.Message
</td>
<td>
@alert.AlertTypeName
</td>
<td>
@Ajax.ActionLink("Dismiss", "Dismiss", new { userAlertID = alert.UserAlertID }, new AjaxOptions() { HttpMethod = "Post" })
</td>
</tr>
}
控制器代码
public PartialViewResult GetAlertData(string selectedAlertType = "All")
{
//create viewModel
return PartialView(viewModel);
}
[HttpPost]
public ActionResult Dismiss(int userAlertID)
{
alertModel.DismissAlert(userAlertID);
return RedirectToAction("Index"); //does nothing, because ajax (?)
}
问题是这样的:我希望“父”视图在单击“关闭”后刷新“GetAlertData”Html.Action 中的数据。解除警报后,如何让“父”视图重新运行GetAlertData?返回 RedirectToAction 什么都不做,因为它是一个 ajax 调用。
我知道我可以在父视图中设置一个 javascript 方法,然后在 Dismiss ajax 调用中的 OnSuccess 中调用它,但这似乎有点乱,我想知道 MVC 框架或辅助方法中是否有任何东西会帮助我做到这一点。
【问题讨论】:
-
另外两个人回答了您的问题。您能否至少承认他们并就他们是否回答您的问题提供反馈。谢谢。
-
@PeterSmith 其中一个就是我。所以我一直在等待,直到我可以将自己的答案标记为答案(明天)。
-
好的,明白(我最近有很多被忽略的答案——导致偏执狂)。
标签: c# javascript ajax asp.net-mvc asp.net-mvc-5