我终于设法使用Ajax来更新我的PartialView。部分视图的目的是一个侧栏小部件,用于显示注册内容并允许从注册中删除项目。如何优雅地处理禁用JavaScript时的AJAX PartialView更新
的PartialView的简化版本如下:
<table id="item-entries">
@foreach (var item in Model.Items)
{
<tr>
<td>@item.Name</td>
<td>@item.Price</td>
<td>
@using (Ajax.BeginForm("RemoveItemEntry", "Registration", new AjaxOptions { UpdateTargetId = "item-entries" }))
{
<button type="submit" name="ItemId" value="@item.ItemId">×</button>
}
</td>
</tr>
}
</table>
这里是行动的缩写例如:
[HttpPost]
public ActionResult RemoveItemEntry(ItemViewModel data)
{
// Perform logic to remove the item from the registration
// then return the PartialView with updated model
return PartialView("~/Views/Partials/ItemEntries.cshtml", model);
}
}
这个伟大的工程,现在,但是我不想报价对于禁用了JavaScript的用户而言,这是一个不好的体验如果您在禁用JavaScript的情况下发布表单,该动作仍然会正确执行,但是您将被重定向到呈现PartialView的网址,而不会显示其他内容。我想要发生的是,对于JavaScript禁用的用户,他们会被重定向回发布表单的原始页面。
这是可以实现的吗?
'Request.IsAjaxRequest'可以帮助您决定要渲染哪个视图。 –