我目前正在开发内联可编辑的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>
我在局部视图中设置会话变量会话[&#34; mon&#34;]值,但此值不受影响
注意:这是一段代码,我是mvc的新手。
答案 0 :(得分:1)
设置会话变量在下一个请求之前不会生效。因此,您无法在局部视图中设置会话变量,然后在主视图中访问该变量。但是,您不应该在任何视图中设置会话中的任何内容,因为视图应该没有逻辑。显然,这是一个目标,而不是一个真正的限制,因为视图将不可避免地具有某些逻辑,但只有当它真正有必要时。在这里,它不是。访问会话的地方在控制器中。
答案 1 :(得分:0)
当您请求视图时,会执行视图中的代码并返回html。根据此调用时的会话变量生成html。在浏览器中呈现视图后,它通过ajax调用patrial。因此,在此流程中,如果更改了会话变量,则无法修改主视图的HTML,因为此流程中未执行代码部分。如果再次请求主视图,则此时更新的会话值将可用。因此,HTML将根据更新的会话变量生成。
答案 2 :(得分:0)
主要观点:
<div class="customSearch" style="border:0px solid;margin:-15px;width:30%;height:auto;">
<script>
(function() {
.....
})();
</script>
<gcse:search enableAutoComplete="true"></gcse:search>
</div>
PartialView:
var isDayLocked =false;
function getFixedHours() {
if(isDayLocked){
//do your stuff
}
}
为什么在必须使用javascript变量时在客户端使用会话?