Asp.net mvc 如何从MVC控制器调用带有参数的数据库“选择”存储过程?

Asp.net mvc 如何从MVC控制器调用带有参数的数据库“选择”存储过程?,asp.net-mvc,stored-procedures,asp.net-mvc-controller,Asp.net Mvc,Stored Procedures,Asp.net Mvc Controller,我目前有一个控制器,它用数据库视图中的所有行填充局部视图 public ActionResult SearchResults() { return PartialView("~/Views/TransactionHistory/_SearchResults.cshtml", db.TRANSACTION_HISTORY.ToList()); } TRANSACTION_HISTORY是模型类的名称。以及显示行的数据库视图。db是我的数据库上下文对象 这是我的模型课: namespace

我目前有一个控制器,它用数据库视图中的所有行填充局部视图

public ActionResult SearchResults()
{
    return PartialView("~/Views/TransactionHistory/_SearchResults.cshtml", db.TRANSACTION_HISTORY.ToList());
}
TRANSACTION_HISTORY是模型类的名称。以及显示行的数据库视图。db是我的数据库上下文对象

这是我的模型课:

namespace TransactionHistory.Models
{
    using System;
    using System.Collections.Generic;

    public partial class TRANSACTION_HISTORY
    {
        public int INTERFACE_RECORD_ID { get; set; }
        public string COMPANY { get; set; }
        public string Status { get; set; }
        public string Carrier { get; set; }
        public string Service { get; set; }
        public string Connote { get; set; }
        public string Order_Type { get; set; }
        public Nullable<decimal> Volume { get; set; }
        public Nullable<decimal> Weight { get; set; }
        public string State { get; set; }
        public string Post_Code { get; set; }
        public string Suburb { get; set; }
        public string Zone { get; set; }
        public string Book_In { get; set; }
        public string Deliver_From { get; set; }
        public string Deliver_To { get; set; }
        public string Trpt_Special_Instructions { get; set; }
        public Nullable<System.DateTime> Date_Created { get; set; }
        public Nullable<System.DateTime> From_Date { get; set; }
        public Nullable<System.DateTime> To_Date { get; set; }
        public string Picklist { get; set; }
    }
}
现在,我有一个在这个视图上运行的存储过程,名为TRANSACTION\u HISTORY\u SEARCH。现在,它在它的where子句中接受两个参数,分别是从\u DATE和到\u DATE,并返回与视图完全相同的行数,这意味着我不想使用不同的模型来存储存储过程返回的行

那么,如何使用控制器的ActionResult方法来实际获取存储过程返回的结果,而不是数据库视图返回的所有行

我知道我需要使用[HttpPost]来执行此操作,因为我将从我的视图文本框条目中传递存储过程的参数

您可以使用属性并使用调用存储过程。大概是这样的:

 List<TRANSACTION_HISTORY> res;

 res = db.TRANSACTION_HISTORY
         .Database
         .SqlQuery<TRANSACTION_HISTORY>("TRANSACTION_HISTORY_SEARCH @FROM_DATE, @TO_DATE",
                                        new SqlParameter("@FROM_DATE", fromDate),
                                        new SqlParameter("@TO_DATE",   toDate))
         .ToList();

1您不需要帖子,因为您不需要更改数据,所以帖子可以是GET。2为什么不使用一个简单的linq.Where子句,例如db.TRANSACTION\u HISTORY.Wherex=>FROM\u DATE>=fromDate&&x=>x.TO\u DATE谢谢。只是我正在处理遗留数据库,这些数据库已经有了存储过程,我的雇主希望我使用它们。我稍后有一个会议,试图说服他们允许我使用LINQ。那么,我是否将这个LINQ查询作为参数传递给“return PartialView”函数?是的,其中fromDate和toDate是方法中的参数,即文本框的值。但是您返回的PartialView也建议您使用ajax。但是,如果要使用SP执行此操作,请参考示例我尝试了LINQ表达式,但FROM_DATE和to_DATE出现错误,这表示这些名称在当前上下文中不存在。我是否必须将模型作为参数传递给SearchResults函数?看起来是那样的。提前谢谢!我不知道您的模型/表格字段是什么,因为您没有显示它们!只需替换为实际的属性名即可