我有以下代码,我试图从常规页面更改为ajax页面,所以当我提交表单时,我只刷新LInkList div.我更改使用行以使用Ajax.BeginForm
这是查看代码:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id="LinkList">
<% Html.RenderPartial("TestUserControl", Model); %>
</div>
<%using (Ajax.BeginForm("AddNewLink", "Test", new AjaxOptions { UpdateTargetId = "LinkList" }))
{ %>
<fieldset style="text-align: left">
<legend>Add New Link</legend>
<table>
<tr>
<td>
Url:
</td>
<td>
<input style="width: 500px" type="text" name="url" />
</td>
</tr>
<tr>
<td>
<input type="submit" value="Add Link" name="submit" />
</td>
</tr>
</table>
</fieldset>
<% } %>
Run Code Online (Sandbox Code Playgroud)
这是控制器代码:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddNewLink(FormCollection collection_)
{
string url = collection_["url"].ToString();
Test test = new Test();
test.Name = DateTime.Now.ToString();
if (Request.IsAjaxRequest())
{
return PartialView("TestUserControl", test);
}
return View("Index", test);
}
Run Code Online (Sandbox Code Playgroud)
知道为什么整个页面会在这种情况下刷新而不是仅仅在div标签内刷新?Request.IsAjaxRequest()始终返回false.
是整个页面刷新还是整个页面在DIV中重新渲染.如果是前者,我怀疑你可能在页面上有一个javascript错误,这将导致你的AJAX处理可操作并导致它完成一个完整的帖子.使用IE8调试或Firefox/Firebug进行检查.您需要在使用AjaxHelper方法的每个页面上包含MicrosoftAjax.js和MicrosoftMvcAjax.js.
如果是后者,我认为你最终会遇到这个问题,那是因为无论你是通过AJAX还是完整帖子获取页面,都会返回整个视图.在方法中添加一些代码,只返回通过AJAX发出请求时要替换的局部视图.
var container = GetContainer(ds1);
if (request.IsAjaxRequest())
{
return PartialView( "LinkList", container );
}
else
{
return View( "Index", container );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2521 次 |
| 最近记录: |