C# 外部Post请求更新页面

C# 外部Post请求更新页面,c#,asp.net-mvc,C#,Asp.net Mvc,问题: 我目前正在做一个项目,通过post请求向网站添加设备。理论上,这个程序应该能够获得外部post请求,然后实时更新当前所在的页面。因此,此网页将接收来自不同语言(如Python)的post请求,然后实时更新/刷新当前网页。如果有任何不同,此网页将始终在目标屏幕上打开 代码: [ActionName("Index")] public async Task<IActionResult> Index() { AllTestsModel model = new AllTests

问题:

我目前正在做一个项目,通过post请求向网站添加设备。理论上,这个程序应该能够获得外部post请求,然后实时更新当前所在的页面。因此,此网页将接收来自不同语言(如Python)的post请求,然后实时更新/刷新当前网页。如果有任何不同,此网页将始终在目标屏幕上打开

代码:

[ActionName("Index")]
public async Task<IActionResult> Index()
{
    AllTestsModel model = new AllTestsModel();
    List<TestConfigModel> configs = new List<TestConfigModel>();
    foreach (var item in _context.TestConfigModels)
    {
        configs.Add(item);
    }
    model.Tests = configs;
    List<Puma> pumas = new List<Puma>();
    foreach (var item in _context.Puma)
    {
        pumas.Add(item);
    }
    if (pumas.Count > 1)
    {
        pumas.RemoveAt(0);
    }
    model.ThePuma = pumas;


    await _context.SaveChangesAsync();


    return View(model);
}
[HttpPost]
public async Task<IActionResult> Index(string serialNum)
{
    if (ModelState.IsValid)
    {
        _context.Add(new Puma { SerialNumber = serialNum, Status = "Waiting for Tests" });
        await _context.SaveChangesAsync();

        return RedirectToAction("Index", "Pumas");
    }
    return View();
}
[ActionName(“索引”)]
公共异步任务索引()
{
AllTestsModel=new AllTestsModel();
列表配置=新列表();
foreach(在_context.TestConfigModels中的var项)
{
配置.添加(项);
}
model.Tests=configs;
List pumas=新列表();
foreach(在_context.Puma中的var项)
{
美洲狮。添加(项目);
}
如果(pumas.Count>1)
{
美洲狮(0);
}
model.ThePuma=美洲狮;
wait_context.SaveChangesAsync();
返回视图(模型);
}
[HttpPost]
公共异步任务索引(字符串serialNum)
{
if(ModelState.IsValid)
{
_Add(新Puma{SerialNumber=serialNum,Status=“Waiting for Tests”});
wait_context.SaveChangesAsync();
返回操作(“索引”、“Pumas”);
}
返回视图();
}

我看了几个不同的例子,但它们似乎都是关于内部职位申请,而不是我要找的。我看过ajax和javascript示例,但我不确定这是否是我想要的/如何实现它们。我对MVC/asp.net也很陌生,所以如果有任何帮助,我将不胜感激

因此,在进行了更多的研究和挖掘之后,我最终找到了我问题的答案。最后我做了一个小小的javascript函数,每五秒钟重新加载一次页面,检查是否有新的更新。由于我已经在Index()的Get方法中检查了对数据库的更改,因此控制器中没有任何代码最终更改

对于那些想知道的人,下面是我最后在视图中为索引添加的代码:

<script type="text/javascript" >
    setTimeout(function () {
        window.location.reload(1);
    }, 5000);

</script >

setTimeout(函数(){
窗口。位置。重新加载(1);
}, 5000);

查看您的代码您只是将页面返回到post请求(因此,无论是谁发送的),如果您查看的是服务器强制更新UI而无需请求,则前端和控制器代码之间需要某种双向通信。信号员之类的。如果要显示的页面的标题
Access Control Allow Origin
设置为
*
,在现代浏览器中,您可以通过ajax直接从JS获得它(请参阅)。如果没有,您应该在服务器中获取它并将其发送到客户端-您可以通过ajax从服务器的JS中获取它。