我需要对从SQL服务器提取的数据执行一些转换计算。在循环浏览集合时,看起来最好的地方是在视图中,但我不确定这是否是最佳实践。另外,我不确定如何在视图中执行此操作。 我仍然相对较新,并且慢慢学习,所以我甚至不确定完成我想要做的事情的语法。
一如既往,我们非常感谢所有人的帮助。
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
@foreach (var item in Model.OR_OP)
{
<div class="panel panel-default">
@Html.Raw("<div class=\"panel-heading\" role=\"tab\" id=\"heading")@Html.DisplayFor(modelitem => item.NAME)@Html.Raw("\">")
<h4 class="panel-title">
@Html.Raw("<a data-toggle=\"collapse\" data-parent=\"#accordion\" href=\"#collapse")@Html.DisplayFor(modelitem => item.NAME)@Html.Raw("\" aria-expanded=\"true\" aria-controls=\"collapse")@Html.DisplayFor(modelitem => item.NAME)@Html.Raw("\">")
@Html.DisplayFor(modelitem => item.NAME)
-
@Html.DisplayFor(modelitem => item.DESCR)
@Html.Raw("</a>")
</h4>
<div>
<div class="btn-custom-start">Start</div>
</div>
<div>
<div class="btn-custom-stop">Stop</div>
</div>
@Html.Raw("</div>")
@Html.Raw("<div id=\"collapse")@Html.DisplayFor(modelitem => item.NAME)@Html.Raw("\" class=\"panel-collapse collapse collapse\" role=\"tabpanel\" aria-labelledby=\"heading")@Html.DisplayFor(modelitem => item.NAME)@Html.Raw("\">")
<div class="panel-body">
@Html.DisplayFor(modelitem => item.PWPLACE)
@Html.DisplayFor(modelitem => item.PPARTS)
@Math(item.PTE.Value/60) <------ this is where I would like to do the calculation.
@Html.DisplayFor(modelitem => item.PTE)
@Html.DisplayFor(modelitem => item.PTR)
</div>
@Html.Raw("</div> ")
</div>
}
</div>
答案 0 :(得分:1)
在这种情况下,您可以在Model
中进行计算。我建议您在Model
类中添加一个属性,例如:
public PropertyName
{
get
{
return @Math(this.PTE.Value/60);
}
}
答案 1 :(得分:1)
任何逻辑类型操作都应该在Controller
中完成。然后,结果应保存到View Model
Controller
。应在Model
中使用View
,以便您可以显示对数据执行的某种操作的结果。我们的想法是,Controller
会更改View Model
,并在适当情况下更改Entity Model
。
View Model
中的Controller
应根据您的Entity Model
设置Controller's
。如果您正在使用DDD,那么很多Domain Models
逻辑应该位于//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
中,当然这个逻辑适合于域,例如计算
所以看起来你正在使用Entity Framework。如果您在顶部链接的页面上阅读:
Q-MakModel.Context.tt
我认为您的模型是从Context
文件生成的。确保Entity Model
文件包含这两个属性,因为每次EF重新生成模型时,如果模板中不存在这些属性,它将删除这些属性。另外需要考虑的是,我不会在UI
View
中使用View Model
。我会使用自定义Controller
然后在View Model
地图中将Entity Model
映射到View
并进行保存。当您加载MVC
时,由于Controller
Entity Model
首先加载,因此您将View Model
映射到Entity
并将其返回到视图。
这将保护您的View Model
,因此您不会在数据库中保存垃圾。
在View
我只会提供与{{1}}相关的内容。
我已将此添加到答案中,因为上面的评论太长了。
让我知道你是如何上场的,这肯定是EF删除了这2个属性。