2014-02-06 98 views
-1

這是控制器:Ajax.BeginForm:從控制器返回什麼來防止頁面刷新?

[HttpPost] 
public async Task<ActionResult> Run(Job job, HttpPostedFileBase productRequestFile, HttpPostedFileBase masterFile, string SignalRConnectionId) 
{ 
    return View(job); 
} 

而且本所認爲:

@using (Ajax.BeginForm("Run", "Job", null, new AjaxOptions(){ HttpMethod = "POST", UpdateTargetId = "container" }, new {enctype="multipart/form-data"})) 
{ 

    <input type="file" name="masterFile" id="masterFile" class="btn btn-default" required /> 
    <input type="file" name="productRequestFile" id="productRequestFile" class="btn btn-default" required /> 
    @Html.TextAreaFor(m => m.Parameters, new { @class = "control form-control" }) 
    @Html.ValidationMessageFor(m => m.Parameters) 
    <input type="hidden" id="SignalRConnectionId" name="SignalRConnectionId" /> 
    @Html.HiddenFor(m => m.Name) 
    <table><tr><td></td></tr></table> 

    <div id="container"></div> 

    <button id="StartButton" type="submit" class="btn btn-lg btn-primary center-block">Start job</button> 

} 

現在我回來View(job)但導致頁面刷新。如果我返回null,那麼頁面將變爲空白。我可以返回什麼以便頁面沒有任何反應?

+0

這有什麼做什麼用你的行動返回。如果我不得不猜測,你的頁面上有一個JavaScript錯誤導致所有JavaScript停止運行,包括你的AJAX,所以表單只是作爲一個正常的表單工作。 –

+0

好吧我會調查這 –

+0

控制檯顯示沒有錯誤,只是導航 –

回答

0

我的問題是我缺少一個參考jquery.unobtrusive阿賈克斯

0

您需要在ajax選項中提供更新目標ID。此外,Ajax表單的作用是將表單發佈到指定的URL,然後用默認的方式替換UpdateTargetId div的所有內容作爲響應,因此在這種情況下,必須返回view,否則它將會空白。

+0

我添加了這個,但它仍然刷新頁面,我會更新我的帖子,以反映這些變化 –