我的主要(MyProfile)视图包含链接,当用户单击链接时,部分视图将加载数据库中的现有数据并由用户更新。MVC4将数据加载到局部视图中
@Ajax.ActionLink("Update 1", "Update1", new { email = @ViewBag.Email }, new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "divCurrentView", InsertionMode = InsertionMode.Replace })
@Ajax.ActionLink("Update 2", "Update2", new { email = @ViewBag.Email }, new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "divCurrentView", InsertionMode = InsertionMode.Replace })
<div id="divCurrentView">
</div>
局部视图:例如:
_Update1:
@model ViewModels.Update1
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.id)
@Html.LabelFor(model => model.Name)
@Html.TextBoxFor(model => model.Name)
<input type="submit" value="Update" />
}
_Update2:
@model ViewModels.Update2
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.id)
@Html.LabelFor(model => model.Website)
@Html.TextBoxFor(model => model.Website)
<input type="submit" value="Update" />
}
在Controller:
public PartialViewResult Update1(string email)
{
var model = populate the viewmodel
return PartialView("_Update1",model);
}
public PartialViewResult Update2(string email)
{
var model = populate the viewmodel
return PartialView("_Update2",model);
}
这并不意味着用户在访问主视图时将点击所有链接。
如果我的方式正确,我想获得反馈或者当用户获取MyProfile时是否应该加载所有数据?在会话中查看和存储数据以及何时从会话加载每个分部视图? 这会避免每次partilaview被加载时调用数据库,还是有更好的方法?
感谢,
UPDATE:
我尝试使用缓存的建议,但问题的数据是全球存储。如果多个用户登录并尝试查看/更新数据,那么所有数据都是相同的我错过了什么?
这是尝试:
public PartialViewResult Update1(string email)
{
var cc = HttpRuntime.Cache.Get("cinfo");
Update1VM model = null;
if (cc == null)
{
model = populate the viewmodel
HttpRuntime.Cache.Insert("cinfo", model);
}
else
{
model = (Update1VM)cc;
}
return PartialView("_Update1", model);
}
取决于我们在会话中存储多少数据。如果它不是很多,那肯定是有效的。如果没有,那么你可能不想将它存储在会话中。 – Gjohn 2014-09-22 15:29:48
多少数据是多少?我有大约20个领域。 – Ben 2014-09-22 15:41:34
它会始终保持20场?这会改变吗?请记住,有一天你不会在那里,其他人将需要处理你创建的内容。就我个人而言,从来没有一个在会话中存储的东西的巨大风扇,只是因为往返数据库的往返行程是不希望的。 py3rstr的repsonse在需要时提供数据,而不是始终加载所有内容。 – Gjohn 2014-09-22 15:47:32