Sql server 基于两个表模型的MVC 4计算

Sql server 基于两个表模型的MVC 4计算,sql-server,asp.net-mvc-4,model-view-controller,Sql Server,Asp.net Mvc 4,Model View Controller,使用MVC4,我从数据库中得到了两个相关的表(利率和支出)。 每次我在“PAYCHECK”表中创建一个事务时,我都希望它计算字段的总数:OrdinarySalary、OvertimeSalary、HolidaySalary等 我在PayCheckController中做了一些计算,但它只从表RATE返回一个主键(RateNumber)。它不返回其他字段,而是返回primarykey 这里有一个get方法 // GET public ActionResult Create()

使用MVC4,我从数据库中得到了两个相关的表(利率和支出)。 每次我在“PAYCHECK”表中创建一个事务时,我都希望它计算字段的总数:OrdinarySalary、OvertimeSalary、HolidaySalary等

我在PayCheckController中做了一些计算,但它只从表RATE返回一个主键(RateNumber)。它不返回其他字段,而是返回primarykey

这里有一个get方法

    // GET

    public ActionResult Create()
    {
        ViewBag.Employee_No = new SelectList(db.EMPLOYEEs, "Employee_No", "Employee_No");
        ViewBag.RateNumber = new SelectList(db.RATES, "RateNumber", "Description");
        return View();
    }

[HttpPost]
    public ActionResult Create(PAYOUT payout, RATE rate)
    {

        if (ModelState.IsValid)
        {  if (payout.RateNumber == rate.RateNumber)
            {

                payout.OrdinarySalary = Convert.ToInt32(payout.OrdinaryHours) * Convert.ToInt32(rate.Ord_Sal_rate);

                payout.OvertimeSalary = Convert.ToInt32(rate.Over_Sal_rate) * Convert.ToInt32(payout.OvertimeHours);

                payout.HolidaySalary = Convert.ToInt32(rate.Hol_Sal_rate) * Convert.ToInt32(payout.HolidayHours);

                payout.GrossWage = payout.OrdinarySalary+
                                   payout.OvertimeSalary +
                                   payout.HolidaySalary + 
                                   payout.BonusPay + 
                                   payout.ShiftAllowance;

                payout.ShiftAllowance = payout.GrossWage * 78 / 100;
            }
            db.PAYOUTs.Add(payout);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.Employee_No = new SelectList(db.EMPLOYEEs, "Employee_No", "Employee_No", payout.Employee_No);
        ViewBag.RateNumber = new SelectList(db.RATES, "RateNumber", "Description", payout.RateNumber);
        return View(payout);
    }
以下是观点:

    @model MvcApplicationPayroll.Models.PAYOUT

@{
    ViewBag.Title = "Create";
    Layout = "~/Views/Shared/_LayoutPage1.cshtml";
}


@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <div id="page-wrapper">
        <div class="container-fluid">
            <div class="row">
                <div class="col-lg-12">
                    <h2 class="page-header">Pay Out </h2>
                </div>
            </div>
            <div class="panel panel-default">
                <div class="panel-heading">
                    Fill in the form below to Pay An Employee &nbsp;&nbsp;&nbsp;
           <a class="fa fa-arrow-circle-left fa-fw">@Html.ActionLink("Back to the List", "Index") </a>
                </div>
                <div class="panel-body">
                    <table>
                        <tr>
                            <td class="col-lg-5">
                                @Html.LabelFor(model => model.Employee_No, "EMPLOYEE No.")
                            </td>
                            <td>
                                @Html.DropDownList("Employee_No", "SELECT EMPLOYEE")
                                @Html.ValidationMessageFor(model => model.Employee_No)
                            </td>
                        </tr>
                        <tr>
                            <td class="col-lg-5">
                                @Html.LabelFor(model => model.RateNumber, "Rate/Level")
                            </td>
                            <td>
                                @Html.DropDownList("RateNumber","SELECT LEVEL")
                                @Html.ValidationMessageFor(model => model.RateNumber)
                            </td>
                        </tr>
                        <tr>
                            <td class="col-lg-5">
                                Ordinary Hours
                            </td>
                            <td>
                                @Html.TextBoxFor(model => model.OrdinaryHours, new { @class = "form-control" })
                                @Html.ValidationMessageFor(model => model.OrdinaryHours)
                            </td>
                        </tr>
                        <tr>
                            <td class="col-lg-5">
                                Overtime Hours
                            </td>
                            <td>
                                @Html.TextBoxFor(model => model.OvertimeHours, new { @class = "form-control" })
                                @Html.ValidationMessageFor(model => model.OvertimeHours)
                            </td>
                        </tr>
                        <tr>
                            <td class="col-lg-5">
                                Holiday Hours
                            </td>
                            <td>
                                @Html.TextBoxFor(model => model.HolidayHours, new { @class = "form-control" })
                                @Html.ValidationMessageFor(model => model.HolidayHours)
                            </td>
                        </tr>
                        <tr>
                            <td class="col-lg-5">

                                Other Deduct
                            </td>
                            <td>
                                @Html.TextAreaFor(model => model.Other_Deduct, new { @class = "form-control"})
                                @Html.ValidationMessageFor(model => model.Other_Deduct)
                            </td>
                        </tr>
                        <tr>
                            <td class="col-lg-5">

                                1 Other Deduct
                            </td>
                            <td>
                                @Html.TextAreaFor(model => model.Other_Deduct1, new { @class = "form-control"})
                                @Html.ValidationMessageFor(model => model.Other_Deduct1)
                            </td>
                        </tr>
                        <tr>
                            <td class="col-lg-5">

                                2 Other Deduct
                            </td>
                            <td>
                                @Html.TextAreaFor(model => model.Other_Deduct2, new { @class = "form-control"})
                                @Html.ValidationMessageFor(model => model.Other_Deduct2)
                            </td>
                        </tr>
                    </table>
                    <br />
                    <div class="col-lg-8">
                        <button type="submit" class="btn btn-primary btn-lg">
                            <span class="fa fa-save fa-fw" aria-hidden="true"></span>Save
                        </button>
                        &nbsp;&nbsp; 
              <a class="fa fa-arrow-circle-left fa-fw">@Html.ActionLink("Back to List", "Index") </a>
                    </div>
                </div>
            </div>
        </div>
    </div> 
}
@model mvcapapplicationpayroll.Models.PAYOUT
@{
ViewBag.Title=“创建”;
Layout=“~/Views/Shared/_LayoutPage1.cshtml”;
}
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
支付
填写下表向员工付款
@ActionLink(“返回列表”、“索引”)
@Html.LabelFor(model=>model.Employee_No,“Employee No.”)
@Html.DropDownList(“员工编号”,“选择员工”)
@Html.ValidationMessageFor(model=>model.Employee\u No)
@Html.LabelFor(model=>model.RateNumber,“Rate/Level”)
@Html.DropDownList(“费率编号”,“选择级别”)
@Html.ValidationMessageFor(model=>model.RateNumber)
平时
@Html.TextBoxFor(model=>model.OrdinaryHours,新的{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OrdinaryHours)
加班时间
@Html.TextBoxFor(model=>model.OvertimeHours,新的{@class=“form control”})
@Html.ValidationMessageFor(model=>model.OvertimeHours)
假日时间
@Html.TextBoxFor(model=>model.HolidayHours,新的{@class=“form control”})
@Html.ValidationMessageFor(model=>model.HolidayHours)
其他扣除
@Html.TextAreaFor(model=>model.Other_,new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Other_)
1其他扣除
@Html.TextAreaFor(model=>model.Other_Deduct1,新的{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Other_Deduct1)
2其他扣除
@Html.TextAreaFor(model=>model.Other_Deduct2,新的{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Other_Deduct2)

拯救 @ActionLink(“返回列表”、“索引”) }
我已经添加了这些行。。。而且似乎在工作

public ActionResult Create(PAYOUT payout, RATE ratenum)
    {


        var rate = db.RATES.First(m => m.RateNumber == ratenum.RateNumber);

您尚未显示相关代码-显示GET方法和view我已添加GET方法和view StephenYou没有为
Rate
的属性呈现任何表单控件(您也不应该,因为您只是选择了一个速率)。您需要根据所选ID再次从数据库中获取
速率
,并将其用于您的计算我已经让它工作了。。。谢谢:-)