Sql server 基于两个表模型的MVC 4计算
使用MVC4,我从数据库中得到了两个相关的表(利率和支出)。 每次我在“PAYCHECK”表中创建一个事务时,我都希望它计算字段的总数:OrdinarySalary、OvertimeSalary、HolidaySalary等 我在PayCheckController中做了一些计算,但它只从表RATE返回一个主键(RateNumber)。它不返回其他字段,而是返回primarykey 这里有一个get方法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()
// 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
<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>
<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再次从数据库中获取速率
,并将其用于您的计算我已经让它工作了。。。谢谢:-)