ASP.NET使用按钮在视图中调用方法

问题描述 投票:0回答:3

我已经在MVC中创建了一个应用程序,该应用程序已集成到已经存在的Web应用程序中(相对性)。在特定的情况下,我想为某些条目更新SQL表。我用下面的代码创建了一个包含sql字符串和相同执行的类操作方法。

MyModel.cs

public class Reports
{
public static int Update()
        {
            Relativity.API.IDBContext eddsDBContext = Relativity.CustomPages.ConnectionHelper.Helper().GetDBContext(-1);
            int workspaceArtifactID = Relativity.CustomPages.ConnectionHelper.Helper().GetActiveCaseID();

            String sql = "UPDATE [EDDS" + workspaceArtifactID + "].[EDDSDBO].[Reports_Admin] SET BeenRun = 'Yes', ReportDate = getdate() where Report_Type = 'Claim_Incomplete' AND (BeenRun <> 'Yes' or BeenRun is null)";

            eddsDBContext.BeginTransaction();
            try
            {
                eddsDBContext.ExecuteNonQuerySQLStatement(sql);
                eddsDBContext.CommitTransaction();
            }
            catch (Exception ex)
            {
                eddsDBContext.RollbackTransaction();
                throw;
            }
            return 0;
        } 
}

我希望在单击按钮以更新表时在我的视图中执行此方法。我知道在视图中调用类操作方法是一种不好的做法,但是在这种情况下,我找不到任何其他解决方案。我的视图的代码如下:

Reports.cshtml

<body>
<button class="button5" onclick="fnUpdateReport();" style="margin-left:100px;">Update</button>
</body>
<script>
function fnUpdateReport() {
if (SelectedValue == "A") {
    @Reports.Update();
}
}
</script>

[方法调用与下拉值绑定,并且单击按钮时应在方法中执行更新命令。

问题

现在,在加载视图时执行类方法(更新),而不是在单击按钮时执行。单击按钮时,它不起作用,这是此应用程序的绝对要求。

如果有人可以帮助我解决如何使该方法响应按钮单击,那将是非常有用的。另外,如果有人通过其他方法肯定会在单击按钮时调用该方法,请告诉我。

让我知道您是否还需要更多详细信息来帮助我解决这一问题。预先感谢!

c# html asp.net-mvc model-view-controller
3个回答
0
投票

您的“ @ Reports.Update();”在页面渲染期间执行。它是服务器端代码。不是客户端。

[如果要从javascript调用服务器端,则需要进行AJAX请求。可以找到一个示例here


0
投票

您必须先了解MVC的工作方式。用这种方法,您只需将服务器方法放入脚本,该脚本将在运行时在浏览器上执行,并且浏览器不允许直接运行服务器端方法。

您必须将请求发送到服务器,例如脚本然后是ajax请求,或直接调用部分视图。


0
投票

请创建一个Action方法,然后从视图中创建一个Ajax调用。这是正确的方法。

© www.soinside.com 2019 - 2024. All rights reserved.