我是MVC的新手,在webforms方面有一定的經驗。MVC - 從視圖刷新控制器SQL數據模型?
我目前在我的控制器中有一個ActionResult函數,它將我所有的SQL數據綁定到模型,然後我可以在視圖中成功構建數據視圖。
我的問題是,擁有一切正常工作,我需要渲染頁面之前,直接叫我的ActionResult控制器,這工作得很好:
public ActionResult Index()
{
Bind_grid();
return View();
}
public class My_Table
{
public string info_a { get; set; }
public string info_b { get; set; }
public string mod_id { get; set; }
}
public ActionResult Bind_grid()
{
SqlConnection checkitem = new SqlConnection("Data Source=[IPADDRESS];Persist Security Info=True;User ID=userid;Password=password");
string query = "SELECT id, info_a, info_b FROM [my_db].[dbo].[ref_index]";
SqlCommand execute = new SqlCommand(query, checkitem);
var model = new List<My_Table>();
using (checkitem)
{
checkitem.Open();
SqlDataReader rdr = execute.ExecuteReader();
while (rdr.Read())
{
var table = new My_Table();
table.info_a = rdr["info_a"].ToString();
table.info_b = rdr["info_b"].ToString();
table.mod_id = rdr["id"].ToString();
model.Add(table);
}
checkitem.Close();
}
return View(model);
}
我想知道如何刷新模式從視圖,而不是要求它在返回視圖之前運行,我已經嘗試過AJAX調用和@ HTML.Action調用Bind_grid,但我似乎無法讓頁面刷新數據。
從視圖中運行Bind_grid以刷新模型的任何建議?
目前我試試這個:
function bind_data() {
$.ajax({
url: '@Url.Action("Bind_grid")',
method: 'POST',
});
@{
int p = 0;
foreach (var d in Model)
{
@:console.log(@d.mod_id);
p++;
}
}
}
我設置爲10秒運行bind_data()函數, 從時間間隔, 之間的SQL數據庫中刪除一些ID的JavaScript的區間,但數據寫入控制檯仍然是原始提取的,而不是刷新的數據。
如果我手動刷新頁面(F5),我會得到正確的數據更新。
我猜我需要做一些部分回傳刷新剃鬚刀數據,但我不確定在MVC中做到這一點的最佳方式。任何幫助表示讚賞。
你的ajax調用只是調用方法並返回視圖,但是你不用做任何事情(你需要在ajax成功回調中更新DOM)。你的循環是剃鬚刀(服務器端)代碼 - 它只是循環通過原始模型 –