C# ASP.NET MVC-从不同的视图/控制器调用相同的存储过程
我有5个不同的控制器/模型/视图。我在每个视图上都有一个按钮,它将调用一个存储过程。根据控制器的不同,会向存储过程传递不同的参数 我知道如何从每个模型类调用这个存储过程,然后在视图和控制器中使用它。我不知道如何创建和使用此存储过程作为公共功能 下面是我所做工作的一个片段——在每个模型类中,我使用ADO.NET实体数据模型将存储过程放入模型中 在每个视图中,我都有:C# ASP.NET MVC-从不同的视图/控制器调用相同的存储过程,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我有5个不同的控制器/模型/视图。我在每个视图上都有一个按钮,它将调用一个存储过程。根据控制器的不同,会向存储过程传递不同的参数 我知道如何从每个模型类调用这个存储过程,然后在视图和控制器中使用它。我不知道如何创建和使用此存储过程作为公共功能 下面是我所做工作的一个片段——在每个模型类中,我使用ADO.NET实体数据模型将存储过程放入模型中 在每个视图中,我都有: <p style="margin-left: 2.5em"> <br /> <inpu
<p style="margin-left: 2.5em">
<br />
<input type="button" style="height:40px; width: 160px;font-weight: bold;background-color:#00ffff; " value='@("Push to use stored procedure" )' onclick=" if (confirm ('Are you sure you want to do this?')){ window.location.href='@Url.Action("SPROCButton", "Controller1")' ;} " />
</p>
在其他控制器中,唯一更改的行是参数。是否需要在每个模型中都有此存储过程,然后调用它
多谢各位
MR有几种方法可以解决这个问题。我建议创建一个基本控制器并添加所有通用代码 在这个例子中,继承的力量并没有表现得那么出色,但我认为它将对编写通用代码有很大帮助
public class BaseController : Controller
{
public void callSP(string theParameter){
db.uspCallTables(theParameter);
}
}
然后,您的控制器1,如下所示:
public class Controller1 : BaseController
{
public ActionResult SPROCButton()
{
try
{
callSP("MyDB.temp.Table1");
return RedirectToAction("Index");
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
这样,您就可以在父类(BaseController.cs)中添加所有公共代码。
我想澄清一下,我假设“db”包含数据库上下文。为了使其适用于您,您必须以与在Controller1中相同的方式加载新BaseController类的对象“db”。我希望这对你有帮助。让我知道!注意。有几种方法可以解决这个问题。我建议创建一个基本控制器并添加所有通用代码 在这个例子中,继承的力量并没有表现得那么出色,但我认为它将对编写通用代码有很大帮助
public class BaseController : Controller
{
public void callSP(string theParameter){
db.uspCallTables(theParameter);
}
}
然后,您的控制器1,如下所示:
public class Controller1 : BaseController
{
public ActionResult SPROCButton()
{
try
{
callSP("MyDB.temp.Table1");
return RedirectToAction("Index");
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
}
这样,您就可以在父类(BaseController.cs)中添加所有公共代码。
我想澄清一下,我假设“db”包含数据库上下文。为了使其适用于您,您必须以与在Controller1中相同的方式加载新BaseController类的对象“db”。我希望这对你有帮助。让我知道!问候