【发布时间】:2015-07-10 13:06:12
【问题描述】:
我在网上阅读了许多类似的问题,但仍然无法弄清楚问题所在。我的Ajax.BeginForm 在Controller 中通过PartialView 返回一条消息,但字符串替换了整个页面。
View:
@using (Ajax.BeginForm("NoMoreItem", "ProductListing",
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = string.Concat("NoMoreItemSection1-", counter)
}, new { @id = string.Concat("NoMoreItemForm1-", counter) }))
{
<input type="hidden" value="@Model.Email" name="email" />
<input type="hidden" value="@i.code" name="code" />
<input type="submit" value="notify me" />
}
</div>
我的控制者:
public ActionResult NoMoreItem(string email, string productCode)
{
string message;
_waitinglist.Save(email, productCode);
message = "Item added to Waiting List";
return PartialView("ItemAdded", message);
}
ItemAdded查看:
@model string
<div>
@Model
</div>
我在_Layout.cshtml 中引用了jquery.unobtrusive-ajax.js 文件,所以这似乎不是原因。
有人知道为什么这条消息会替换整个页面吗?
【问题讨论】:
-
发生这种情况时,大部分时间是因为脚本加载不当。见这里stackoverflow.com/questions/23895918/…
-
点击按钮之前呈现的 HTML 是什么样子的?
-
@Jasen 一个带有项目名称和按钮的表格。我在布局中包含了 js 文件,但我没有在 ItemAdded 视图中使用布局。也许这可能是原因?如果是这样,我应该在局部视图还是父视图中引用js文件?
-
ItemAdded 是部分的,应该使用布局加载到另一个视图中——这很好。检查调试控制台上是否有错误。检查你有 jquery.js 然后 jquery.unobtrusive-ajax.js 呈现的 html。确保您的 id 在页面上是唯一的。主视图上的目标 id
NoMoreItemSection1-counter在哪里?
标签: c# ajax asp.net-mvc razor