2016-09-16 76 views
1

我正在使用ASP.Net MVC 5和C#。我使用VS2015腳手架功能從模型結構生成視圖和控制器。 控制器和視圖爲我的應用程序提供了編輯,創建和刪除記錄的一些基本功能。 所有形式的觀點包含此聲明:ajax.beginform有什麼問題

@using (Html.BeginForm()) 

我試圖替換此聲明:

@using (Ajax.BeginForm("Edit", new AjaxOptions())) 

我已經改變了一些在編輯操作方法。正如你所看到的,我爲了不定向(並顯示例如錯誤消息)

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit([Bind(Include = "....")] MyDataObject obj) 
    { 
    /* if (ModelState.IsValid) 
     { 
      ... 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     }*/ 
     return View(obj); 
    } 

當然註釋一些代碼,我有包括微軟jQuery的不顯眼的Ajax的NuGet pacakges和2個JS腳本列入頭。 一個也web.config中加入這一行:

<add key="UnobtrusiveJavaScriptEnabled" value="true"/> 

我沒有JS錯誤,但整個頁面被刷新。我可以看到它beaucse我添加這種標籤在我的網頁上(在_layout和窗體內)

@DateTime.Now.ToLongTimeString() 

什麼是錯?

感謝

+0

我想你ajax選項丟失,這就是爲什麼你會得到錯誤 –

+0

我只是希望沒有整頁的表單重新加載。在這種情況下沒有必要選擇? – Bob5421

+0

如果你想重新加載你的頁面,那麼你爲什麼使用Ajax表格 –

回答

0

如果要重新加載表單才把你必須定義AjaxOptions象下面這樣:

@using (Ajax.BeginForm(new AjaxOptions 
{ 
    HttpMethod = "POST", 
    Url = "api/Person", 
    OnComplete = "personSavedComplete" // Your function name define your form refresh logic into this 
})) 

,並確保使用下面的腳本:

<script src="~/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"> </script> 
+0

好的,實際上沒有辦法自動執行此操作嗎?如果我理解,我必須使用Web API併爲該表單寫一個部分視圖? – Bob5421

+0

我認爲這是達到您的要求的有效方式。如果您定義刷新表單後您的目的是什麼。我可以建議你更多...謝謝 –

+0

其目的是:用戶填寫表格時應該犯錯。在表格之外,我有其他控件,我不想更新(例如正在播放的視頻) – Bob5421