A具有Telerik MVC网格的剃刀视图。第一列有一个删除记录的链接。该链接是Ajax Actionlink。
@(
Html.Telerik().Grid<QMS.Models.CustomerTableRow>(Model)
.Name("CustomerTable")
.Columns(c =>
{
c.Template(
@<text>
@Ajax.ActionLink("Delete","Delete", new { key = item.CustomerKey },new AjaxOptions{ Confirm="Delete this Customer?",UpdateTargetId = "CustomerTable", HttpMethod = "Delete"})
</text>
);
c.Bound(col => col.FirstName);
c.Bound(col => col.LastName);
c.Bound(col => col.Email);
c.Bound(col => col.HomePhone);
})
.Pageable()
.Sortable()
.Resizable(res => res.Columns(true))
.Scrollable()
)
//Action Method in view
//[HttpDelete] <-- can't have this or else a "Resource not found" error occurs
public ActionResult Delete(String key)
{
repo.DeleteCustomer(key);
return PartialView("CustomerTable", repo.GetCustomerTable());
}
当我点击我在模板列中创建的“删除”链接时,会发生一些奇怪的事情。首先,确认消息不会出现,但仍会调用删除操作。其次,即使我有HttpMethod =“删除”,如果我用[HttpDelete]装饰动作方法,我得到“资源未找到”错误。最后,此网格处于局部视图中,并且action方法在删除后返回partialview,但是所有格式都丢失了,就好像CSS文件不再存在一样。如果链接在网格外部呈现,则不会发生这种情况。我使用的是版本2011.1.315
答案 0 :(得分:1)
我意识到这已经很晚了,但我遇到了一个非常类似的问题,我终于弄明白了,这个链接在搜索结果中出现了。
我试图将 Ajax.Actionlink 添加到MVC网格的客户端模板中。最后发现问题源于UpdateTargetID =&#34; myElement&#34;。
Ajax.ActionLink 会生成一个未转义的&#34;#&#34;用于更新目标。
我的工作是:
columns.Bound(p => p.ID).Title("myTitle")
.ClientTemplate(Ajax.ActionLink("View", "myAction", "myController", new { myParam = "#=ID#" }, new AjaxOptions() { OnSuccess = "myJSFunction" }).ToHtmlString());
的然后:强>
function myJSFunction(response) {
$("#updateTargetElement").html(response);
}
希望这有助于某人。
答案 1 :(得分:0)
好奇,您使用的是jQuery 1.6.1(我相信这是目前最新版本)还是1.5.1版本的telerik提供的?
例如在我正在使用的应用程序中 @ Html.Telerik()。ScriptRegistrar()。jQuery的(假) 包括Telerik需要的脚本但不包含jQuery,以便我可以自己包含它并控制它使用的版本
无论您使用哪个版本,您都会得到相同的行为吗?
我假设因为它在网格之外工作,所以你引用了jquery.unobtrusive-ajax.min.js。