问题描述
假设我有一个 viewmodel,例如一个从实体类 Foo 映射的 Fooviewmodel
public class Fooviewmodel
{
public string FooId{ get; set; }
public string FooDetail { get; set; }
public DateTime FooStart { get; set; }
public long FooDuration { get; set; }
}
要编辑 Foo 对象,我调用相应的编辑视图,并从 Foo 控制器传递 Fooviewmodel。
@model Fooviewmodel
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Shift</h4>
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.FooId,new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.FooId)
@Html.ValidationMessageFor(model => model.FooId)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FooDetail,new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.FooDetail)
@Html.ValidationMessageFor(model => model.FooDetail)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FooStart,new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.FooStart)
@Html.ValidationMessageFor(model => model.FooStart)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FooDuration,new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.FooDuration)
@Html.ValidationMessageFor(model => model.FooDuration)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List","Index")
</div>
FooDuration 属性很长,因为我需要将持续时间存储为后端 sqlServer DB 中的滴答数作为 BigInt。然后我想使用 FooDuration 并转换为 UI 的时间跨度,以便用户可以以更有用的格式编辑 FooDuration - 假设格式化为 HH:mm。例如,假设我需要让用户能够输入/编辑持续时间为 10:00 是 10 小时的持续时间(然后我需要在数据库中存储 360000000000 个滴答声)。
我的问题是我不知道解决这个问题的最佳方法。如果我在视图模型中创建另一个属性,假设 FooTimeDuration 使用 get 和 set 访问器来更新 FooDuration。这似乎总是在编辑视图 HTTPGET 上获取数据库中存储的内容,这是可以的,但也可以在 HTTPPOST 上获取,因为它会覆盖用户已编辑的内容。我知道我使用了错误的方法。
我将这个业务逻辑放在 viewmodel 中是否正确,或者我应该将它放在控制器中还是我应该完全做其他事情?
有人可以帮我找到正确的方向吗?我希望我已经解释了我的问题,我知道这可能是基本的东西。如果我没有提供足够的信息,我很乐意编辑问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)