我在这里创建一个小应用程序。我在这里输入数据的HTML页面。单击“提交”按钮时,数据应通过存储过程存储在数据库中。我在存储过程中编写了insert语句。
html代码:
@model USTGlobal.WorkBench.UI.Models.FloorPlanViewModel
@{
ViewBag.Title = "RequestForm";
}
<div>
<div class="row">
<div class="col-lg-12">
<h2 class="page-header">Request Form</h2>
</div>
</div>
<div class="row">
<div class="col-lg-8">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-lg-4">Period:</label>
<div class="col-lg-8">
@Html.DropDownList("Quarter", new SelectListItem[] { (new SelectListItem() { Text = "Q1", Value = "1"}), (new SelectListItem() { Text = "Q2", Value = "2" }), (new SelectListItem() { Text = "Q3", Value = "3" }), (new SelectListItem() { Text = "Q4", Value = "4"}) }, "-- Select Quarter --", new { @class = "form-control" })
<br />
@Html.DropDownList("Year", new SelectListItem[] { (new SelectListItem() { Text = "2016", Value = "2016" }), (new SelectListItem() { Text = "2017", Value = "2017" }) }, "-- Select Year --", new { @class = "form-control" })
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-lg-4">Line ID:</label>
<div class="col-lg-8">
@Html.TextBoxFor(model => model.floorConfig.LineID, new { onkeypress = "return isNumberKey(event)", @class = "form-control" })
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-lg-4">Project:</label>
<div class="col-lg-8">
@Html.TextBoxFor(model => model.floorConfig.Project, new { onkeypress = "return isNumberKey(event)", @class = "form-control" })
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-lg-4">Budget:</label>
<div class="col-lg-8">
@Html.TextBoxFor(model => model.floorConfig.Budget, new { onkeypress = "return isNumberKey(event)", @class = "form-control" })
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-offset-4" style="padding: 10px 0px 0px 0px;">
<input type="submit" id="btnSubmit" value="Submit" class="btn btn-lg btn-success" />
<input type="button" id="btnCancel" value="Clear" class="btn btn-lg btn-success" />
</div>
</div>
</div>
FloorPlanviewmodel:public FloorConfirguration floorConfig { get; set; }
存储库代码:
public class FloorConfirguration
{
public string Quarter { get; set; }
public int Year { get; set; }
public string LineID { get; set; }
public string Project { get; set; }
public decimal Budget { get; set; }
}
如何从这里前进?我应该在controller
?
答案 0 :(得分:1)
您可以告诉Entity Framework使用DbContext.Database.ExecuteSqlCommand
此方法将执行您指定的任何命令,无论是包含SQL代码的字符串还是存储过程的名称。
ExecuteSqlCommand
接受一个参数数组,因此要执行存储过程,该存储过程为您要插入的每个新数据位获取参数值(就像你应该的那样),你可以试试这个:
List<SqlParameter> args = new List<SqlParameter>();
args.Add(new SqlParameter("@parameterName", parameterValue));
// Keep adding parameters like this
using (MyDatabaseContext db = new MyDatabaseContext())
{
db.Database.ExecuteSqlCommand("StoredProcedureName", args.ToArray());
}
这将在你的提交按钮在你的控制器中发布的ActionResult函数中执行。
答案 1 :(得分:0)
您可以使用
查看;
@using (Html.BeginForm("ActionName", "Controller", FormMethod.Post))
{
//Add your desing
}
控制器;
[HttpPost]
public ActionResult ActionName(Model model)
{
if (ModelState.IsValid)
{
try
{
//Create SQL class and write your method (insert, update or delete etc.).
bool check = SQLManager.Check(model);
if (check)
{
//Make something
}
else
{
//Return error
return View("Index");
}
}
catch (Exception ex)
{
//Return error
return View("Index");
}
}
else
{
//Return error
return View("Index");
}
}