2012-05-31 73 views
1

我有下面的表格,我想要做的是,当人们点击搜索按钮时,一个请求将文件传送到服务器,服务器将返回一组新的结果,并且我将重新渲染div到出现新的结果为什么AjaxForm不适合我?

@using (Ajax.BeginForm("Search", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "DivToUpdate" })) 
     { 
      <div style="margin: 10px 50px 5px 50px;"> 
       @Html.TextBox("instrument", (string)ViewBag.DefaultInstrumentStr) 
       &nbsp;&nbsp;&nbsp; 
       <input type="submit" value="Search" /> 
      </div> 
     } 
     <div id="DivToUpdate" style="width: 100%; display: none;"> 
      @if (Model != null) 
      { 
       @Html.Partial("_InstrumentList", @Model); 
      } 
      else 
      { 
       <span>Loading ....</span> 
      } 
     </div> 

这里是我的控制器实现:

public ActionResult Search(string instrument) 
     { 
      // ... base on the input perform certain action to generate a list of result 

      return PartialView("_InstrumentList", instruments); 
     } 

当我运行它,点击搜索后,我只能看到在浏览器中的局部视图,数据不更新div。

任何人都知道我做错了什么? 谢谢。

回答

1

anyone has any idea what did i do wrong?

你忘了引用jquery.unobtrusive-ajax.js脚本到你的页面:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 
+0

thx为你评论..我添加了unobtru sive-ajax.js .. – jojo

+0

当在visual studio中开始调试时..我得到这个错误 Microsoft JScript运行时错误:无法设置属性'unobtrusive'的值:对象为null或undefined 并单击continue .. ..还是一样的东西 – jojo

+0

查看我的评论回.. ..忘了重建..... – jojo

0

您尝试更新的div,必须是内Ajax.BeginForm支架。在MVC2和MVC3

jquery.unobtrusive-ajax.js 

(套UnobtrusiveJavaScriptEnabled假):

+0

嗯..我移动了Ajax.BeginForm括号内的div ..仍然没有工作.. – jojo

+0

描述什么你真的得到了吗?你看过萤火虫或小提琴手的要求/回应吗?你能进入调试模式的方法吗? –

1

您必须引用一些脚本:

在MVC3(集UnobtrusiveJavaScriptEnabled真)

MicrosoftMvcAjax.js 

对于型动物,你可以看看这个:Unobtrusive Client Validation in ASP.NET MVC 3

+0

hmmm在调试..请求被提交给服务器..但div不重新绘制...我错过任何东西? – jojo

+0

忘了说.. thx你的意见...我添加了jquery.unobtrusive-ajax.js ..和ajax请求似乎工作..只是我的网页没有更新 – jojo

+0

我的坏..我设置显示为没有我自己 – jojo