C# 如何用输入参数调用存储过程并用输出参数填充文本框?

C# 如何用输入参数调用存储过程并用输出参数填充文本框?,c#,sql-server,asp.net-mvc,entity-framework,stored-procedures,C#,Sql Server,Asp.net Mvc,Entity Framework,Stored Procedures,我正在创建一个简单的ASP.NET MVC web应用程序。我正在尝试调用我的存储过程: ALTER PROCEDURE [dbo].[sp_GetMesData] @WONo varchar(20) AS BEGIN SET NOCOUNT ON; SELECT [Resname], [SAP_ARTIKELNUMMER], [LotNo] FROM dbo.vw_MES WHERE

我正在创建一个简单的ASP.NET MVC web应用程序。我正在尝试调用我的存储过程:

ALTER PROCEDURE [dbo].[sp_GetMesData]
    @WONo varchar(20)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 
        [Resname],
        [SAP_ARTIKELNUMMER],
        [LotNo]
    FROM 
        dbo.vw_MES
    WHERE 
        WONo = @WONo
END
我的模型:

namespace SlurryOrderTest.Models
{
    public class UserResponse
    {
        [Required]
        public string OrderNumber { get; set; }
        public string MatNumber { get; set; }
        public string SlurryNumber { get; set; }
        public string BatchNumber { get; set; }
    }
}
在我的控制器中,我试图从视图的第一个文本框(“send”)调用带有输入参数的存储过程,但我不知道如何用存储过程的输出参数填充其他三个文本框

namespace SlurryOrderTest.Controllers
{
    public class OrderController : Controller
    {
        SlurryOrderTest.Models.SlurryOrderEntities1 db = 
            new SlurryOrderTest.Models.SlurryOrderEntities1();

        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(string send)
        {
            var mesdata = db.sp_GetMesData(send);
            //What i should add here?
            return View();
        }
    }
}
我的看法是:

@using (Html.BeginForm("Index", "Order", FormMethod.Post))
   {
       @Html.TextBox("send")
       <input type="submit" value="Send" />
   }

@using (Html.BeginForm())
    {
   //That also need changes
   <p>Mat number:<br>@Html.TextBoxFor(x => x.MatNumber)</p>
   <p>Slurry number:<br>@Html.TextBoxFor(x => x.SlurryNumber)</p>
   <p>Batch number:<br>@Html.TextBoxFor(x => x.BatchNumber)</p>
@使用(Html.BeginForm(“Index”,“Order”,FormMethod.Post))
{
@文本框(“发送”)
}
@使用(Html.BeginForm())
{
//这也需要改变
材料编号:
@Html.TextBoxFor(x=>x.MatNumber)

泥浆编号:
@Html.TextBoxFor(x=>x.SlurryNumber)

批号:
@Html.TextBoxFor(x=>x.BatchNumber)


您必须在视图中定义模型:

@model UserResponse
@using (Html.BeginForm("Index", "Order", FormMethod.Post))
       {
           @Html.TextBox("send")
           <input type="submit" value="Send" />
       }
....

检查下面的答案@Kwiecmac它有没有进入带有参数的方法
Index
?旁注:你不应该在你的存储过程中使用
sp_
前缀。微软有,而且你确实会在将来的某个时候冒名称冲突的风险。最好只是避免
sp_
而使用其他前缀x-或者根本没有前缀!@marc_s谢谢。我会记住这一点。很抱歉,您的解决方案不起作用。可能是ma的错误,因为当我单击我的文本框“发送”时,我收到一条消息:“未找到视图‘索引’或其主视图,或者没有视图引擎支持搜索的位置”您的视图必须命名为“索引”或者您的操作名称必须是更改。另一方面,您的视图名称和操作名称必须相同。或者必须在操作结果中使用视图名称,如下所示:返回视图(“ViewName”,model)@KwiecMacYou right-我更改了它。但现在,当我单击“发送”按钮时,我收到一条消息:“传递到字典的模型项的类型为'System.Data.Entity.Core.Objects.ObjectResult'1[SlurryOrderTest.Models.sp_GetMesData_Result]',但此字典需要'SlurryOrderTest.Models.UserResponse'类型的模型项。”。“您的sp结果类型必须为:UserResponse类型。您必须将sp结果强制转换为UserResponse类型的对象。我尝试过这样做,但没有得到积极的结果:(您能给我更多提示吗?很抱歉我问了一些愚蠢的问题,但我是C#和ASP.NET MVC的初学者
....
var mesdata = db.sp_GetMesData(send);
return View(mesdata);
....