Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC-从不同的视图/控制器调用相同的存储过程_C#_Asp.net Mvc 4 - Fatal编程技术网

C# ASP.NET MVC-从不同的视图/控制器调用相同的存储过程

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

我有5个不同的控制器/模型/视图。我在每个视图上都有一个按钮,它将调用一个存储过程。根据控制器的不同,会向存储过程传递不同的参数

我知道如何从每个模型类调用这个存储过程,然后在视图和控制器中使用它。我不知道如何创建和使用此存储过程作为公共功能

下面是我所做工作的一个片段——在每个模型类中,我使用ADO.NET实体数据模型将存储过程放入模型中

在每个视图中,我都有:

<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”。我希望这对你有帮助。让我知道!问候