当我在部分视图中创建和更新会话变量时,会话变量不会影响视图
本文关键字:变量 会话 视图 影响 更新 创建 | 更新日期: 2023-09-27 18:35:44
我目前正在开发内联可编辑的jquery数据表,因为我调用部分视图从服务器端调用数据。 数据正在成功获取。
问题:在部分视图中,我正在设置会话变量值,但鉴于会话变量值未更新。 这是我的代码结构。
查看代码 :
function getFixedHours() {
$(document).ready(function () {
var result = $('#demo');
var date11 = $("#datepicker").datepicker({ dateFormat: 'yy-mm-dd' }).val();
$.ajax({
url: '@Url.Action("Home", "partialindex")',
tyoe: 'GET',
data: { date: date11, type: 1 },
success: function (data) {
$('#demo').html(data);
$('#myDataTable').dataTable({
"bPaginate": false,
"aoColumnDefs": [
{ 'bFilter': false, 'aTargets': [0, 1, 2, 3, 4, 5, 6, 7, 8] },
{ 'bSortable': false, 'aTargets': [0, 1, 2, 3, 4, 5, 6, 7, 8] },
{ "bSearchable": false, "aTargets": [0, 1, 2, 3, 4, 5, 6, 7, 8] }
]
}).makeEditable({
sUpdateURL: "/Home/UpdateData/",
"aoColumns": [
null,
@{
if (Session["mon"]!=null)
{
<text>
{ indicator: 'Saving...',
tooltip: 'Click to select town',
loadtext: 'loading...',
type: 'time',
submit: 'Save Changes'
}
</text>
}
else {
<text> null </text>
}
}
]
});
},
error: function (xhr, ajaxOptions, thrownError) {
alert('Failed to retrieve data.');
}
});
})
}
部分视图:
<table id="myDataTable" class="table">
<thead>
<tr>
<th>
@Html.DisplayName("Site")
</th>
<th>
@if (!dayLocked)
{
HttpContext.Current.Session["mon"] = "true";
}
else
{
<text>Locked</text>
Session.Remove("mon");
}
@Html.DisplayName(mon.ToString("ddd"))
@Html.DisplayName(mon.ToString("dd-MMM"))
</th>
</tr>
</thead>
</table>
我在部分视图中设置了会话变量 session["mon"] 值,但此值在视图中不受影响
注意:这是一段代码,我是MVC的新手。
设置 a 会话变量直到下一个请求才会生效。因此,您无法在分部视图中设置会话变量,然后在主视图中访问该变量。但是,实际上,您不应该在任何视图中设置会话中的任何内容,因为视图应该没有逻辑。显然,这是一个目标,而不是一个真正的限制,因为观点不可避免地会有一些逻辑,但只有在真正必要的时候。在这里,它不是。访问会话的位置位于控制器中。
发生的情况是,当您请求视图时,视图中的代码被执行并返回 html。html 是根据会话变量生成的,就像它在此调用时一样。在浏览器中呈现视图后,它通过 ajax 调用 patrial。因此,在此流中,如果更改了会话变量,则它无法修改主视图的 HTML,因为代码部分不会在此流中执行。如果再次请求主视图,则这次更新的会话值将可用。因此,将根据更新的会话变量生成 HTML。
主视图 :
var isDayLocked =false;
function getFixedHours() {
if(isDayLocked){
//do your stuff
}
}
部分视图:
<script>
isDayLocked = '@!Model.DayLocked'=='False';
</script>
当必须使用 JavaScript 变量时,为什么要在客户端使用会话?