在MVC ASP.NET数据库第一环境中进行简单计算

时间:2017-04-10 11:42:04

标签: asp.net model-view-controller scaffolding

你好,有编码员,

我对ASP.Net MVC很陌生,我发现很难弄清楚如何使用来自不同实体的数据进行计算。

所以我有3个表及其相应的属性:

演示

  • 名称
  • 最低工资
  • TaxDeduction

视频

  • 标题
  • 喜欢
  • RatePerLike

付款

  • GrossPay
  • 扣减
  • NettPay

Presenter已作为外键链接到付款和视频。

所以这些表是在SQL中创建的。这些模型已在Visual Studio 2015中相应创建。 我还使用脚手架来创建控制器。

现在,当我尝试在付款表中创建新条目时,我的问题就出现了。

基本上,需要发生的是所有付款属性应该通过使用来自其他2个表的数据进行计算来完成,根据选择的Presenter。 付款创建视图中的所有内容都是演示者的DropDownList,以及执行特定演示者付款的按钮。

像这样:

  • GrossPay =(Presenter.MinimumWage +(Video.Likes * Video.RatePerLike)
  • 扣除=(GrossPay *(Presenter.TaxDeduction / 100)
  • NettPay =(GrossPay - Deductions)

我发现很难在网上找到帮助我的东西。

我们非常感谢您的帮助,如果您需要任何其他信息,请告知我们。

请在下面找到代码:

付款方式

public partial class Payment
{
    public int PaymentId { get; set; }
    public double GrossPay { get; set; }
    public int PresenterId { get; set; }

    public Presenter Presenter { get; set; }

    public double calcGrossPay()
    {
        Video v = new Video();
        double gross = 0.0;

        gross = (Presenter.MinimumWage + (v.Likes * v.RatePerLike));

        return gross;
    }

}

视频模型

 public partial class Video
{
    public int VideoId { get; set; }
    public string Title { get; set; }
    public int PresenterId { get; set; }
    public int Likes { get; set; }
    public double RatePerLike { get; set; }

    public virtual Presenter Presenter { get; set; }
}

演示者模型

public partial class Presenter
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public Presenter()
    {
        this.Payments = new HashSet<Payment>();
        this.Videos = new HashSet<Video>();
    }

    public int PresenterId { get; set; }
    public string Name { get; set; }
    public string Contact { get; set; }
    public string Email { get; set; }
    public double MinimumWage { get; set; }
    public double TaxDeduction { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Payment> Payments { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual ICollection<Video> Videos { get; set; }
}

付款管理员(创建)

        [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "PaymentId,GrossPay,PresenterId")] Payment payment)
    {
        if (ModelState.IsValid)
        {
            payment.GrossPay = payment.calcGrossPay();
            db.Payments.Add(payment);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.PresenterId = new SelectList(db.Presenters, "PresenterId", "Name", payment.PresenterId);
        return View(payment);
    }

付款查看(创建)

<div class="form-group">
        @Html.LabelFor(model => model.PresenterId, "PresenterId", htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("PresenterId", null, htmlAttributes: new { @class = "form-control" })
            @Html.ValidationMessageFor(model => model.PresenterId, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>

我似乎无法理解如何相应地定义参数或如何在模型之间解析数据。

Error

0 个答案:

没有答案