【发布时间】:2018-02-02 12:07:31
【问题描述】:
我目前正在ViewComponent (ViewComponent1) 视图中编码。在这个视图中,我列出了一些项目:
如您所见,频道 11、12、13 和 14 是可点击的。每个频道都有一些附加信息(OBIS、avtalsid.. 等)。我要做的是在 ViewComponent1 中调用 ViewComponent2,并根据单击的项目传递一些数据。
我尝试创建另一个名为“Test”的View,并在该View 中调用 ViewComponent2 及其参数,如下所示:
<div class="row">
<div class="col-md-2 canalstyle">
<a asp-controller="Customer" asp-action="Test" asp-route-pod="@item.STATION"
asp-route-idnr="@item.IDNR" asp-route-kanal="@item.KANAL" asp-route-start="@Model.start"
asp-route-end="@Model.end"> @Html.DisplayFor(modelItem => item.KANAL)</a>
</div>
</div>
这可行,但是这种方法将我从当前的View(ViewComponent 1)重定向。我不想要那个。我希望当前视图从 ViewComponent2 加载附加信息。
我运行 ajax 的函数:
function myFunction() {
var data = JSON.stringify({
'idnr': id,
'start': this.start,
'end': this.end
});
$.ajax({
url: '@Url.Action("Test2","Customer")',
type: 'GET',
data: { idnr: id, start: this.start, end: this.end },
contentType: 'application/json',
success: handleData(data)
})
};
function handleData(data) {
alert(data);
var url = $(this).attr("href");
var $target = $(this).closest("div").find(".details");
$.get(url, function (res) {
$target.html(res);
});
//do some stuff
}
还有我的 Test2 操作:
public async Task<IActionResult> Test2(string idnr, string start, string end)
{
ServiceClient r2s = new R2S.ServiceClient();
R2S.Konstant[] kData = r2s.GetKonstantListAsync(new string[] { "IDNR" }, new string[] { idnr}).Result; // mätarnummer in... --> alla konstanter kopplade till denna.
return ViewComponent("MeterReader2", new { k = kData[0], start = start, end = end });
}
我正在尝试以相同的 DOM 为目标。有什么想法吗?
【问题讨论】:
标签: javascript c# asp.net-core asp.net-core-viewcomponent