C# ASP.Net 5.0在视图中单击按钮/链接时调用控制器函数

C# ASP.Net 5.0在视图中单击按钮/链接时调用控制器函数,c#,asp.net-core-5.0,C#,Asp.net Core 5.0,我正在学习ASP.NETCore5.0和EntityFrameworkCore。我的一个控制器中有一个简单的函数,可以在单击时将数字1添加到数据库中 当我单击链接时,该值被正确地添加到数据库中,但视图崩溃。如果我在初始页面加载时调用该函数,它可以正常工作,但从按钮单击调用它对我来说根本不起作用。要么什么都没有发生,要么调用了函数,但我得到了一个空引用异常,这取决于我的尝试是什么 MyAppController.cs public IActionResult InsertNewActionNumb

我正在学习ASP.NETCore5.0和EntityFrameworkCore。我的一个控制器中有一个简单的函数,可以在单击时将数字1添加到数据库中

当我单击链接时,该值被正确地添加到数据库中,但视图崩溃。如果我在初始页面加载时调用该函数,它可以正常工作,但从按钮单击调用它对我来说根本不起作用。要么什么都没有发生,要么调用了函数,但我得到了一个空引用异常,这取决于我的尝试是什么

MyAppController.cs

public IActionResult InsertNewActionNumber()
{            
    _context.RGWActions.Add(new RGWAction { ReduceMeat = 1 });
    _context.SaveChanges();
    Debug.WriteLine("*******************TEST2********************TEST2*********************");
    return View();
}
MyApp.cshtml
中的链接:

<td class="d-none d-sm-none d-md-none d-lg-table-cell d-xl-table-cell" style="vertical-align:middle; text-align:center;">
    <a href="@Url.Action("InsertNewActionNumber", "MyApp")">
        <img src="@Model.MouseClickIconThumbnailUrl" id="MouseClickIconRow1" width="20" height="35" alt="Mouse Click Here Image">
    </a>
</td>
我也尝试过:

  • 按所需单击。但是根本不调用该函数
  • 根据使用。也没有快乐
  • Razor语法
    但是我得到了一个InvalidOperationException:无法覆盖'href'属性以产生错误
  • google和stack overflow前10或15个结果的变体

  • 非常感谢您对我所做错事的任何帮助。

    您需要发送一个模型给您查看。这就是它崩溃的方式:

    public IActionResult InsertNewActionNumber()
    {            
        _context.RGWActions.Add(new RGWAction { ReduceMeat = 1 });
        _context.SaveChanges();
        
     var model= ....your code
    
        return View(model);
    }
    
    或者,代替再次创建模型,您必须调用get-insert表单操作

    public IActionResult InsertNewActionNumber()
    { 
    _context.RGWActions.Add(new RGWAction { ReduceMeat = 1 });
        _context.SaveChanges();
     
        return GetActionNumber(); // <= replace with your get action name
    }
    
    public IActionResult InsertNewActionNumber()
    { 
    _Add(新的RGWAction{ReduceMeat=1});
    _SaveChanges();
    
    返回GetActionNumber();//因此,您的视图需要一个模型,而您没有从控制器将模型返回到视图。在我看来,这是一个AJAX调用而不是使用按钮发布到控制器的好例子。我之所以这样说,是因为您的控制器方法似乎不是在整个模型上运行,而是在增加一个属性。谢谢,这很有帮助,但我现在收到另一个错误“System.InvalidOperationException:未找到视图'InsertNewActionNumber'。搜索了以下位置:我不知道它为什么要查找具有该名称的视图,该名称是元素中指定的函数名称。按照惯例/默认情况,asp.net MVC控制器使用视图的方法名称(即insertnewactionnumber.cshtml)。您需要有此视图
    views/MyApp/insertnewactionnumber.cshtml
    。这只是一个空视图吗?一个空的.cshtml文件?显然,我的函数名不必与按钮所在的视图名匹配,或者我只能有一个函数?同样,我不能为每个函数都需要一个完全填充的视图,否则我的应用程序将我的每一页都有多余的副本吗?@DMur请检查此链接,谢谢。我正试图向您提出同样的建议。我通常使用“保存”视图来执行“添加新内容”、“更新”或“编辑”操作。在“添加新内容”操作结束时,我通常调用“编辑”操作,并返回包含新数据的相同视图。
    public IActionResult InsertNewActionNumber()
    { 
    _context.RGWActions.Add(new RGWAction { ReduceMeat = 1 });
        _context.SaveChanges();
     
        return GetActionNumber(); // <= replace with your get action name
    }