提交后在SqlServer中存储输入的数据

时间:2017-07-25 08:26:32

标签: c# html asp.net-mvc model-view-controller

我在这里创建一个小应用程序。我在这里输入数据的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

中调用存储过程吗?

2 个答案:

答案 0 :(得分:1)

您可以告诉Entity Framework使用DbContext.Database.ExecuteSqlCommand

执行特定的SQL命令

此方法将执行您指定的任何命令,无论是包含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");
    }
}