gpt4 book ai didi

stored-procedures - ASP.Net MVC(C#)中如何调用和执行存储过程

转载 作者:太空狗 更新时间:2023-10-29 21:16:34 26 4
gpt4 key购买 nike

大家好,我有点不知所措。我已经使用 ASP.NET MVC 和 C# 在 vi​​sual studio 中创建了我的数据库、模型、 Controller 和 View ,但我不知道如何调用我也创建的存储过程。

我希望在我放置在 View 中的按钮上调用存储过程。单击按钮时,此存储过程应执行并显示结果。下面是我创建的存储过程、 View 、模型和 Controller 。

这是我的“员工”模型:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace MVCSimpleApp.Models
{
[Table("Employees")]
public class Employee
{
[Display(Name ="Employee Id")]
public int EmployeeId { get; set; }
[Display(Name ="First Name")]
public string FirstName { get; set; }
[Display(Name ="Last Name")]
public string LastName { get; set; }
}
}

这是我的数据上下文:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace MVCSimpleApp.Models
{
public class EmployeeContext : DbContext
{
public DbSet<Employee> Employee { get; set; }
}
}

这是我的员工 Controller :

using MVCSimpleApp.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;

namespace MVCSimpleApp.Controllers
{
public class EmployeeController : Controller
{
private EmployeeContext db = new EmployeeContext();
// GET: Employee
public ActionResult Index()
{

var employees = from e in db.Employee select e;
return View(employees);
}
}
}

现在这是我的存储过程。内容不多,只是为了练习目的。

Create Proc DisplayStudents
AS
BEGIN
/*selecting all records from the table whose name is "Employee"*/
Select * From Employee
END

这是我的观点:

@model IEnumerable<MVCSimpleApp.Models.Employee>

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Student List</h2>

<p>
<a href="@Url.Action("Create")" title="Add new" class="btn btn-primary btn-lg">
<span class="glyphicon glyphicon-plus "></span>
Add Student
</a>


</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.EmployeeId)
</th>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th></th>
</tr>

@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(model => item.EmployeeId)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
<span>
<a href="@Url.Action("Edit", new { id = item.EmployeeId})" title="Edit Record">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</span>
|
<span>
<a href="@Url.Action("Details", new { id = item.EmployeeId})" title="View Details">
<span class="glyphicon glyphicon-th-list"></span>
</a>
</span>
|
<span>
<a href="@Url.Action("Delete", new { id = item.EmployeeId})" title="Delete">
<span class="glyphicon glyphicon-trash"></span>
</a>
</span>
</td>
</tr>
}
/*this is the button I want the stored procedure to be called on when I click it*/
<button>Run</button>
</table>

伙计们,我需要你们对此事的意见和反馈。将接受将参数传递给存储过程的提示。如果我不在这里做事,请纠正我。感谢您的关心。

最佳答案

如果不需要使用 EF,您可以通过以下方式进行:

string cnnString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;

SqlConnection cnn = new SqlConnection(cnnString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "ProcedureName";
//add any parameters the stored procedure might require
cnn.Open();
object o = cmd.ExecuteScalar();
cnn.Close();

如果您需要使用 Entity Framework ,请查看 this discussion .您还想使用用于插入、更新和删除的存储过程,请查看 this tutorial来自微软。

要通过单击按钮执行代码,您可以创建一个表单,在表单中放置一个按钮,如下所示:

@using(Html.BeginForm("TestAction", "TestController", FormMethod.Get))
{
<input type="submit" value="Submit" />
}

在你的 Controller 中你会有这样的 TestAction 方法

public ActionResult TestAction(){....}

如果您需要将任何参数传递给 TestAction,只需将它们指定为方法中的参数,然后使用接受 actionName、controllerName、routeValues 和 formMethod 作为参数的 BeginForm 的重载版本。

要将结果传递给 View ,您需要根据从存储过程中收到的值创建一个具有属性的 View 模型,然后从 TestAction 方法返回一个具有该 View 模型的 View 。

关于stored-procedures - ASP.Net MVC(C#)中如何调用和执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com