【发布时间】:2021-01-21 06:58:26
【问题描述】:
我在视图中有 1 个数据,这些数据在 OnGet 方法中分配为 ViewData。
OnGet 方法:
public void OnGet(string parameter = "default")
{
ViewData["SelectedParam"] = parameter;
}
我的观点:
@{
var selectedParam= ViewData["SelectedParam"];
}
<h1>Some Page</h1>
<hr />
<div class="row">
<div class="col-3">
<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
@await Component.InvokeAsync("MyComponent")
</div>
</div>
<div class="col-9">
<div id="mainDiv">
@selectedParam
<hr />
@if (string.IsNullOrEmpty(selectedParam.ToString()))
{
<h5>No param selected</h5>
}
else
{
<h5>@selectedParam selected</h5>
}
</div>
</div>
</div>
我的组件正在发送参数,View 正在更改 ViewData["SelectedParam"] 的值,现在我想刷新 div 的内容。
JQuery:
$(document).on('click', 'componentElement', function () {
var parameterResult = "test";
$.ajax({
url: '/Index',
type: 'get',
data: {
parameter: parameterResult
},
success: function () {
<!-- here I need to reload -->
}
});
});
我尝试过location.reload(),但我必须只刷新这个div,而不是整个页面,也尝试过$('#mainDiv').load(' #mainDiv'),但仍然没有
【问题讨论】:
-
您想使用 JQuery 传递 ViewData?那是行不通的(除非我在这里遗漏了一些东西)。 ViewData 和 Razor 代码在页面加载之前。页面加载后,它是纯 HTML 和 JS/JQuery。因此,您需要在 OnGet 上返回一个 JSon,并使用 JQuery 删除并添加回 div 以相应地对其进行格式化。如果可以的话,我会尝试与消息来源一起提供一个体面的答案。
-
@CyberClaw 你理解得很好。我想用 ViewData 的更新值重新加载这个 div。
标签: c# jquery razor-pages